René's URL Explorer Experiment


Title: Fix TcfCaV1 (Canada) OptimizedRange encoding to use Fibonacci by chuff · Pull Request #106 · IABTechLab/iabgpp-java · GitHub

Open Graph Title: Fix TcfCaV1 (Canada) OptimizedRange encoding to use Fibonacci by chuff · Pull Request #106 · IABTechLab/iabgpp-java

X Title: Fix TcfCaV1 (Canada) OptimizedRange encoding to use Fibonacci by chuff · Pull Request #106 · IABTechLab/iabgpp-java

Description: Summary Per the GPP Consent String Specification, the Canada (TcfCaV1) section encodes several fields as OptimizedRange / N-ArrayOfRanges, both of which use Fibonacci coding. They were using fixed-integer encoders. This ports the same fix to the 4.X architecture. VendorExpressConsent, VendorImpliedConsent, DisclosedVendors (OptimizedRange) — EncodableOptimizedFixedRange → new EncodableOptimizedFibonacciRange, backed by a new OptimizedFibonacciRangeEncoder (mirrors OptimizedFixedRangeEncoder, swapping in the existing FibonacciIntegerRangeEncoder). PubRestrictions (N-ArrayOfRanges(6,2), whose ids are an OptimizedRange) — EncodableArrayOfFixedIntegerRanges → new EncodableArrayOfOptimizedFibonacciRanges. The fixed variant is left untouched for TCF EU, which legitimately keeps the legacy encoding. (Base64 is already correct on 4.X — TcfCaV1 uses the compressed Base64Segment for all segments.) Output consistency Byte-identical to the master-based fix (#105): the updated test vectors match exactly — e.g. the populated vendor section becomes …BhADVqxGAD0AILVgAA and PubRestrictions becomes …CCgAS7o. Empty / bitfield-form data is unchanged. Scope This is the encoding fix only. Backwards-compatible decoding of pre-fix (fixed-range) strings is a separate PR stacked on this branch (it will show only the decode changes once this merges). Test plan mvn test — 344 tests, 0 failures mvn spotless:check — clean 🤖 Generated with Claude Code

Open Graph Description: Summary Per the GPP Consent String Specification, the Canada (TcfCaV1) section encodes several fields as OptimizedRange / N-ArrayOfRanges, both of which use Fibonacci coding. They were using fixed-...

X Description: Summary Per the GPP Consent String Specification, the Canada (TcfCaV1) section encodes several fields as OptimizedRange / N-ArrayOfRanges, both of which use Fibonacci coding. They were using fixed-...

Opengraph URL: https://github.com/IABTechLab/iabgpp-java/pull/106

X: @github

direct link

Domain: github.com

react-profiling0
react-import-mapreact,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@d5750093facf
route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:a6adb836-c8d5-6327-c121-e1cef1228e51
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idD980:2A302:10D32F7:17E686B:6AF660CE
html-safe-noncec686b2f17297091e4491ab26f334ef31c8f76a9bda9e21464e85d7addaeb87ba
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEOTgwOjJBMzAyOjEwRDMyRjc6MTdFNjg2Qjo2QUY2NjBDRSIsInZpc2l0b3JfaWQiOiI0NjI5MzM4NjI3ODY2MjU1NTY2IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0=
visitor-hmac37442978909abe6b9c9004e9fb082b955a0bd29487b5b8ae0a35d8da32bb321d
hovercard-subject-tagpull_request:3863996431
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/IABTechLab/iabgpp-java/pull/106/files
twitter:imagehttps://avatars.githubusercontent.com/u/114670?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/114670?s=400&v=4
og:image:altSummary Per the GPP Consent String Specification, the Canada (TcfCaV1) section encodes several fields as OptimizedRange / N-ArrayOfRanges, both of which use Fibonacci coding. They were using fixed-...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None098e6c51631cb9b26aaac7fc4415aa2fbae92ec485c1c462bcb624be736d0612
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/IABTechLab/iabgpp-java git https://github.com/IABTechLab/iabgpp-java.git
octolytics-dimension-user_id82903538
octolytics-dimension-user_loginIABTechLab
octolytics-dimension-repository_id538620496
octolytics-dimension-repository_nwoIABTechLab/iabgpp-java
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id538620496
octolytics-dimension-repository_network_root_nwoIABTechLab/iabgpp-java
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release7e1d6f809cb3996f327420b8e32c8d29169f779d
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/IABTechLab/iabgpp-java/pull/106/files#start-of-content
https://github.com/
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FIABTechLab%2Fiabgpp-java%2Fpull%2F106%2Ffiles
GitHubRepository hosting, code review, and collaborationhttps://github.com/platform
CopilotAI coding agent for tasks, projects, and automated workhttps://github.com/features/copilot
ActionsCI/CD and automationhttps://github.com/features/actions
Code QualityQuality analysis, fixes, and enforcementhttps://github.com/features/code-quality
CodespacesCloud development environmentshttps://github.com/features/codespaces
Code SecurityVulnerability detection and remediationhttps://github.com/security/advanced-security/code-security
Secret ProtectionSecret scanning and leak preventionhttps://github.com/security/advanced-security/secret-protection
All Featureshttps://github.com/features
Documentationhttps://docs.github.com/en
Traininghttps://learn.github.com/skills
Certificationshttps://learn.github.com/credentials
Build with Copilothttps://github.com/features/ai
Customize Copilothttps://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot/customize-copilot-overview
Integrationshttps://github.com/marketplace
Trending reposhttps://github.com/trending
GitHub Sponsorshttps://github.com/open-source/sponsors
Developer articleshttps://github.com/resources/articles
ChangelogYour source for the latest features, improvements, and fixes across GitHub products, all in one place.https://github.blog/changelog/
Enterpriseshttps://github.com/enterprise
Teamhttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
See all industrieshttps://github.com/solutions/industry
Why GitHubhttps://github.com/why-github
Customer Storieshttps://github.com/customer-stories
Business insightshttps://github.com/solutions/executive-insights
Trust Centerhttps://github.com/trust-center
GitHub Advanced SecurityEnterprise-grade code securityhttps://github.com/security/advanced-security
Copilot for businessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Documentationhttps://docs.github.com/en
Resource centerhttps://github.com/resources
Bloghttps://github.blog/
Events & webinarshttps://github.com/resources/events
Community Forumhttps://github.com/orgs/community/discussions
Customer Storieshttps://github.com/customer-stories
Integrationshttps://github.com/marketplace
Customer supporthttps://help.github.com/
Traininghttps://learn.github.com/skills
GitHub Statushttps://www.githubstatus.com/
Abouthttps://github.com/about
Partnershttps://github.com/partners
Changeloghttps://github.blog/changelog/
GitHub UniverseThe event for developers, by developers — talks, workshops, and what’s next for GitHub.https://githubuniverse.com/
Pricinghttps://github.com/pricing
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FIABTechLab%2Fiabgpp-java%2Fpull%2F106%2Ffiles
Sign uphttps://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=IABTechLab%2Fiabgpp-java
Reloadhttps://github.com/IABTechLab/iabgpp-java/pull/106/files
Reloadhttps://github.com/IABTechLab/iabgpp-java/pull/106/files
Reloadhttps://github.com/IABTechLab/iabgpp-java/pull/106/files
IABTechLabhttps://github.com/IABTechLab
iabgpp-javahttps://github.com/IABTechLab/iabgpp-java
Codehttps://github.com/IABTechLab/iabgpp-java
Issues13 (13)https://github.com/IABTechLab/iabgpp-java/issues
Pull requests4 (4)https://github.com/IABTechLab/iabgpp-java/pulls
Actionshttps://github.com/IABTechLab/iabgpp-java/actions
Projectshttps://github.com/IABTechLab/iabgpp-java/projects
Security and qualityhttps://github.com/IABTechLab/iabgpp-java/security
Insightshttps://github.com/IABTechLab/iabgpp-java/pulse
Sign up for GitHub https://github.com/signup?return_to=%2FIABTechLab%2Fiabgpp-java%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2FIABTechLab%2Fiabgpp-java%2Fissues%2Fnew%2Fchoose
Tejasshackhttps://github.com/Tejasshack
IABTechLab:4.Xhttps://github.com/IABTechLab/iabgpp-java/tree/4.X
chuff:fix/canada-encoding-4xhttps://github.com/chuff/iabgpp-java/tree/fix/canada-encoding-4x
Conversation 0 https://github.com/IABTechLab/iabgpp-java/pull/106
Commits 1 https://github.com/IABTechLab/iabgpp-java/pull/106/commits
Checks 2 https://github.com/IABTechLab/iabgpp-java/pull/106/checks
Files changed https://github.com/IABTechLab/iabgpp-java/pull/106/files
Please reload this pagehttps://github.com/IABTechLab/iabgpp-java/pull/106/files
Fix TcfCaV1 (Canada) OptimizedRange encoding to use Fibonacci https://github.com/IABTechLab/iabgpp-java/pull/106/files#top
Show all changes 1 commit https://github.com/IABTechLab/iabgpp-java/pull/106/files
12c26db Fix TcfCaV1 (Canada) OptimizedRange encoding to use Fibonacci chuff Jun 14, 2026 https://github.com/IABTechLab/iabgpp-java/pull/106/commits/12c26db0c60c2f58007a4aa047f036d936f10924
Clear filters https://github.com/IABTechLab/iabgpp-java/pull/106/files
Please reload this pagehttps://github.com/IABTechLab/iabgpp-java/pull/106/files
Please reload this pagehttps://github.com/IABTechLab/iabgpp-java/pull/106/files
EncodableArrayOfOptimizedFibonacciRanges.java https://github.com/IABTechLab/iabgpp-java/pull/106/files#diff-cdb02ec1ff994a05ac48c9fbb42e57c3edb7ee669278b598bd4f95675392655d
EncodableOptimizedFibonacciRange.java https://github.com/IABTechLab/iabgpp-java/pull/106/files#diff-aee7609bcebfddc64a15cc2341dad7e5336cea4212ff43b6b913d2096efb2252
OptimizedFibonacciRangeEncoder.java https://github.com/IABTechLab/iabgpp-java/pull/106/files#diff-fbe3c17bb80a6b08de913979c35b9b19c753c826e8e7d45bf29b7708422873fc
TcfCaV1Field.java https://github.com/IABTechLab/iabgpp-java/pull/106/files#diff-93744930fa13ad623919241ddc4ade8528db235de47e46aee9cd6b848410b81b
GppModelTest.java https://github.com/IABTechLab/iabgpp-java/pull/106/files#diff-ae8c0971a91ea4a256ed67bb915ecc588494cd9c060ab78989aa8aeb458ac93b
TcfCaV1Test.java https://github.com/IABTechLab/iabgpp-java/pull/106/files#diff-e7691a6dcfb04136ff8798b242fb4c3db5bd9fe2241a11dd3c18847375a08890
.../src/main/java/com/iab/gpp/encoder/datatype/EncodableArrayOfOptimizedFibonacciRanges.javahttps://github.com/IABTechLab/iabgpp-java/pull/106/files#diff-cdb02ec1ff994a05ac48c9fbb42e57c3edb7ee669278b598bd4f95675392655d
View file https://github.com/chuff/iabgpp-java/blob/12c26db0c60c2f58007a4aa047f036d936f10924/iabgpp-encoder/src/main/java/com/iab/gpp/encoder/datatype/EncodableArrayOfOptimizedFibonacciRanges.java
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/IABTechLab/iabgpp-java/pull/106/{{ revealButtonHref }}
...-encoder/src/main/java/com/iab/gpp/encoder/datatype/EncodableOptimizedFibonacciRange.javahttps://github.com/IABTechLab/iabgpp-java/pull/106/files#diff-aee7609bcebfddc64a15cc2341dad7e5336cea4212ff43b6b913d2096efb2252
View file https://github.com/chuff/iabgpp-java/blob/12c26db0c60c2f58007a4aa047f036d936f10924/iabgpp-encoder/src/main/java/com/iab/gpp/encoder/datatype/EncodableOptimizedFibonacciRange.java
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/IABTechLab/iabgpp-java/pull/106/{{ revealButtonHref }}
...er/src/main/java/com/iab/gpp/encoder/datatype/encoder/OptimizedFibonacciRangeEncoder.javahttps://github.com/IABTechLab/iabgpp-java/pull/106/files#diff-fbe3c17bb80a6b08de913979c35b9b19c753c826e8e7d45bf29b7708422873fc
View file https://github.com/chuff/iabgpp-java/blob/12c26db0c60c2f58007a4aa047f036d936f10924/iabgpp-encoder/src/main/java/com/iab/gpp/encoder/datatype/encoder/OptimizedFibonacciRangeEncoder.java
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/IABTechLab/iabgpp-java/pull/106/{{ revealButtonHref }}
iabgpp-encoder/src/main/java/com/iab/gpp/encoder/field/TcfCaV1Field.javahttps://github.com/IABTechLab/iabgpp-java/pull/106/files#diff-93744930fa13ad623919241ddc4ade8528db235de47e46aee9cd6b848410b81b
View file https://github.com/chuff/iabgpp-java/blob/12c26db0c60c2f58007a4aa047f036d936f10924/iabgpp-encoder/src/main/java/com/iab/gpp/encoder/field/TcfCaV1Field.java
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/IABTechLab/iabgpp-java/pull/106/{{ revealButtonHref }}
https://github.com/IABTechLab/iabgpp-java/pull/106/files#diff-93744930fa13ad623919241ddc4ade8528db235de47e46aee9cd6b848410b81b
https://github.com/IABTechLab/iabgpp-java/pull/106/files#diff-93744930fa13ad623919241ddc4ade8528db235de47e46aee9cd6b848410b81b
https://github.com/IABTechLab/iabgpp-java/pull/106/files#diff-93744930fa13ad623919241ddc4ade8528db235de47e46aee9cd6b848410b81b
iabgpp-encoder/src/test/java/com/iab/gpp/encoder/GppModelTest.javahttps://github.com/IABTechLab/iabgpp-java/pull/106/files#diff-ae8c0971a91ea4a256ed67bb915ecc588494cd9c060ab78989aa8aeb458ac93b
View file https://github.com/chuff/iabgpp-java/blob/12c26db0c60c2f58007a4aa047f036d936f10924/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/GppModelTest.java
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/IABTechLab/iabgpp-java/pull/106/{{ revealButtonHref }}
https://github.com/IABTechLab/iabgpp-java/pull/106/files#diff-ae8c0971a91ea4a256ed67bb915ecc588494cd9c060ab78989aa8aeb458ac93b
https://github.com/IABTechLab/iabgpp-java/pull/106/files#diff-ae8c0971a91ea4a256ed67bb915ecc588494cd9c060ab78989aa8aeb458ac93b
https://github.com/IABTechLab/iabgpp-java/pull/106/files#diff-ae8c0971a91ea4a256ed67bb915ecc588494cd9c060ab78989aa8aeb458ac93b
https://github.com/IABTechLab/iabgpp-java/pull/106/files#diff-ae8c0971a91ea4a256ed67bb915ecc588494cd9c060ab78989aa8aeb458ac93b
iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/TcfCaV1Test.javahttps://github.com/IABTechLab/iabgpp-java/pull/106/files#diff-e7691a6dcfb04136ff8798b242fb4c3db5bd9fe2241a11dd3c18847375a08890
View file https://github.com/chuff/iabgpp-java/blob/12c26db0c60c2f58007a4aa047f036d936f10924/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/TcfCaV1Test.java
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/IABTechLab/iabgpp-java/pull/106/{{ revealButtonHref }}
https://github.com/IABTechLab/iabgpp-java/pull/106/files#diff-e7691a6dcfb04136ff8798b242fb4c3db5bd9fe2241a11dd3c18847375a08890
https://github.com/IABTechLab/iabgpp-java/pull/106/files#diff-e7691a6dcfb04136ff8798b242fb4c3db5bd9fe2241a11dd3c18847375a08890
https://github.com/IABTechLab/iabgpp-java/pull/106/files#diff-e7691a6dcfb04136ff8798b242fb4c3db5bd9fe2241a11dd3c18847375a08890
https://github.com/IABTechLab/iabgpp-java/pull/106/files#diff-e7691a6dcfb04136ff8798b242fb4c3db5bd9fe2241a11dd3c18847375a08890
https://github.com/IABTechLab/iabgpp-java/pull/106/files#diff-e7691a6dcfb04136ff8798b242fb4c3db5bd9fe2241a11dd3c18847375a08890
https://github.com/IABTechLab/iabgpp-java/pull/106/files#diff-e7691a6dcfb04136ff8798b242fb4c3db5bd9fe2241a11dd3c18847375a08890
https://github.com/IABTechLab/iabgpp-java/pull/106/files#diff-e7691a6dcfb04136ff8798b242fb4c3db5bd9fe2241a11dd3c18847375a08890
https://github.com/IABTechLab/iabgpp-java/pull/106/files#diff-e7691a6dcfb04136ff8798b242fb4c3db5bd9fe2241a11dd3c18847375a08890
Please reload this pagehttps://github.com/IABTechLab/iabgpp-java/pull/106/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.