From 8ff740190b2229038513a71bdfc7a99d36ae0e81 Mon Sep 17 00:00:00 2001 From: manishdex25 Date: Tue, 21 Jul 2026 23:45:23 +0530 Subject: [PATCH 01/10] feat: add obligation records context and related types - Introduced a new JSON context for obligation records. - Updated index.ts to include the new obligation records context. - Added ObligationRecordsCredentialStatus type to manage obligation records. - Implemented assertion function for ObligationRecordsCredentialStatus in utils.ts. - Enhanced credential status checking to accommodate obligation records. --- .../context/obligation-records-context.json | 32 +++++++++++++++++++ packages/w3c-context/src/lib/index.ts | 11 +++++++ .../w3c-credential-status/src/lib/types.ts | 14 ++++++++ .../w3c-credential-status/src/lib/utils.ts | 31 ++++++++++++++++++ packages/w3c-vc/src/lib/helper/index.ts | 10 +++++- 5 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 packages/w3c-context/src/context/obligation-records-context.json diff --git a/packages/w3c-context/src/context/obligation-records-context.json b/packages/w3c-context/src/context/obligation-records-context.json new file mode 100644 index 0000000..72b279d --- /dev/null +++ b/packages/w3c-context/src/context/obligation-records-context.json @@ -0,0 +1,32 @@ +{ + "@context": { + "@version": 1.1, + "@protected": true, + "TransferableRecords": { + "@id": "https://example.com/terms#TransferableRecords", + "@type": "@id", + "@context": { + "@protected": true, + "tokenId": { + "@id": "https://example.com/terms#tokenId" + }, + "tokenNetwork": { + "@id": "https://example.com/terms#tokenNetwork", + "@context": { + "@protected": true, + "chain": { + "@id": "https://example.com/terms#chain" + }, + "chainId": { + "@id": "https://example.com/terms#chainId", + "@type": "http://www.w3.org/2001/XMLSchema#integer" + } + } + }, + "obligationRegistry": { + "@id": "https://trustvc.io/context/terms#obligationRegistry" + } + } + } + } +} \ No newline at end of file diff --git a/packages/w3c-context/src/lib/index.ts b/packages/w3c-context/src/lib/index.ts index aabc8a9..51258d4 100644 --- a/packages/w3c-context/src/lib/index.ts +++ b/packages/w3c-context/src/lib/index.ts @@ -4,6 +4,7 @@ import { DocumentLoader, DocumentLoaderObject } from './types'; import jsonldSignatures from 'jsonld-signatures'; import attachmentsContext from '../context/attachments-context.json'; import bbsV1 from '../context/bbs-v1.json'; +import boeContext from '../context/bill-of-exchange.json'; import bolContext from '../context/bill-of-lading.json'; import bolcContext from '../context/bill-of-lading-carrier.json'; import cooContext from '../context/coo.json'; @@ -21,6 +22,7 @@ import renderContext from '../context/render-method-context.json'; import renderContextV2 from '../context/render-method-context-v2.json'; import statusList2021V1 from '../context/status-list-2021-v1.json'; import trContext from '../context/transferable-records-context.json'; +import obligationRecordsContext from '../context/obligation-records-context.json'; import warehouseReceiptContext from '../context/warehouse-receipt.json'; import { Document } from './types'; @@ -35,12 +37,15 @@ export const MULTIKEY_V1_URL = 'https://w3id.org/security/multikey/v1'; export const STATUS_LIST_2021_CREDENTIAL_URL = 'https://w3id.org/vc/status-list/2021/v1'; export const TR_CONTEXT_URL = 'https://trustvc.io/context/transferable-records-context.json'; +export const OBLIGATION_RECORDS_CONTEXT_URL = + 'https://trustvc.io/context/obligation-records-context.json'; export const RENDER_CONTEXT_URL = 'https://trustvc.io/context/render-method-context.json'; export const RENDER_CONTEXT_V2_URL = 'https://trustvc.io/context/render-method-context-v2.json'; export const ATTACHMENTS_CONTEXT_URL = 'https://trustvc.io/context/attachments-context.json'; export const QRCODE_CONTEXT_URL = 'https://trustvc.io/context/qrcode-context.json'; export const OPENCERTS_CONTEXT_URL = 'https://trustvc.io/context/opencerts-context.json'; +export const BOE_CONTEXT_URL = 'https://trustvc.io/context/bill-of-exchange.json'; export const BOL_CONTEXT_URL = 'https://trustvc.io/context/bill-of-lading.json'; export const BOLC_CONTEXT_URL = 'https://trustvc.io/context/bill-of-lading-carrier.json'; export const COO_CONTEXT_URL = 'https://trustvc.io/context/coo.json'; @@ -64,6 +69,10 @@ export const trContexts: { [key: string]: Document } = { [TR_CONTEXT_URL]: trContext, }; +export const obligationRecordsContexts: { [key: string]: Document } = { + [OBLIGATION_RECORDS_CONTEXT_URL]: obligationRecordsContext, +}; + export const renderContexts: { [key: string]: Document } = { [RENDER_CONTEXT_URL]: renderContext, }; @@ -81,6 +90,7 @@ export const qrCodeContexts: { [key: string]: Document } = { }; export const templateContexts: { [key: string]: Document } = { + [BOE_CONTEXT_URL]: boeContext, [BOL_CONTEXT_URL]: bolContext, [BOLC_CONTEXT_URL]: bolcContext, [COO_CONTEXT_URL]: cooContext, @@ -112,6 +122,7 @@ export async function getDocumentLoader( [ contexts, trContexts, + obligationRecordsContexts, renderContexts, renderContextsV2, attachmentsContexts, diff --git a/packages/w3c-credential-status/src/lib/types.ts b/packages/w3c-credential-status/src/lib/types.ts index 08d4df1..019b990 100644 --- a/packages/w3c-credential-status/src/lib/types.ts +++ b/packages/w3c-credential-status/src/lib/types.ts @@ -40,6 +40,20 @@ export type TransferableRecordsCredentialStatus = Omit & { + type: 'TransferableRecords'; + tokenId: string; + tokenNetwork: { + chain: string; + chainId: string | number; + }; + obligationRegistry: string; +}; + export type RawCredentialStatusVC = { '@context': string | string[]; type: string[]; diff --git a/packages/w3c-credential-status/src/lib/utils.ts b/packages/w3c-credential-status/src/lib/utils.ts index 983a0e6..0845bdf 100644 --- a/packages/w3c-credential-status/src/lib/utils.ts +++ b/packages/w3c-credential-status/src/lib/utils.ts @@ -9,6 +9,7 @@ import { CredentialStatusPurpose } from './BitstringStatusList/types'; import { BitstringStatusListCredentialStatus, GeneralCredentialStatus, + ObligationRecordsCredentialStatus, SignedCredentialStatusVC, TransferableRecordsCredentialStatus, VCBitstringCredentialSubject, @@ -151,6 +152,36 @@ export const assertTransferableRecords = ( isNumber(Number(chainId), 'credentialStatus.tokenNetwork.chainId'); }; +/** + * Asserts an Obligation Records (BoE) credential status. + * @param {ObligationRecordsCredentialStatus} credentialStatus - Obligation credential status. + * @param {'sign' | 'verify'} mode - Validation mode. + */ +export const assertObligationRecords = ( + credentialStatus: ObligationRecordsCredentialStatus, + mode: 'sign' | 'verify' = 'verify', +): void => { + const { + type, + tokenId, + tokenNetwork: { chain, chainId }, + obligationRegistry, + } = credentialStatus; + assertCredentialStatusType(type); + + if (tokenId && mode === 'sign') { + throw new Error( + `"tokenId" is a generated field and should not be included in the credential status.`, + ); + } else if (mode === 'verify') { + isString(tokenId, 'credentialStatus.tokenId'); + } + + isString(obligationRegistry, 'credentialStatus.obligationRegistry'); + isString(chain, 'credentialStatus.tokenNetwork.chain'); + isNumber(Number(chainId), 'credentialStatus.tokenNetwork.chainId'); +}; + /** * Fetches the verifiable credential of the credential status. * @param {string} url - The URL of the statusListCredential. diff --git a/packages/w3c-vc/src/lib/helper/index.ts b/packages/w3c-vc/src/lib/helper/index.ts index 71c7751..7729042 100644 --- a/packages/w3c-vc/src/lib/helper/index.ts +++ b/packages/w3c-vc/src/lib/helper/index.ts @@ -2,9 +2,11 @@ import { CredentialContextVersion } from '@trustvc/w3c-context'; import { assertBitstringStatusListEntry, assertCredentialStatusType, + assertObligationRecords, assertStatusList2021Entry, assertTransferableRecords, BitstringStatusListCredentialStatus, + ObligationRecordsCredentialStatus, TransferableRecordsCredentialStatus, } from '@trustvc/w3c-credential-status'; import { @@ -525,7 +527,13 @@ export const _checkCredentialStatus = ( } else if (type === 'BitstringStatusListEntry') { assertBitstringStatusListEntry(credentialStatus as BitstringStatusListCredentialStatus); } else if (type === 'TransferableRecords') { - assertTransferableRecords(credentialStatus as TransferableRecordsCredentialStatus, mode); + if ( + typeof (credentialStatus as { obligationRegistry?: string }).obligationRegistry === 'string' + ) { + assertObligationRecords(credentialStatus as ObligationRecordsCredentialStatus, mode); + } else { + assertTransferableRecords(credentialStatus as TransferableRecordsCredentialStatus, mode); + } } else { assertCredentialStatusType(type); } From bb5e7302abf7de19cfc14ca3eb9e6902be637645 Mon Sep 17 00:00:00 2001 From: manishdex25 Date: Wed, 22 Jul 2026 12:02:40 +0530 Subject: [PATCH 02/10] feat: add bill of exchange context --- .../src/context/bill-of-exchange.json | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 packages/w3c-context/src/context/bill-of-exchange.json diff --git a/packages/w3c-context/src/context/bill-of-exchange.json b/packages/w3c-context/src/context/bill-of-exchange.json new file mode 100644 index 0000000..02ae046 --- /dev/null +++ b/packages/w3c-context/src/context/bill-of-exchange.json @@ -0,0 +1,87 @@ +{ + "@context": { + "@version": 1.1, + "@protected": true, + "boeNumber": { + "@id": "https://trustvc.io/context/terms#boeNumber" + }, + "placeOfIssue": { + "@id": "https://trustvc.io/context/terms#placeOfIssue" + }, + "dateOfIssue": { + "@id": "https://trustvc.io/context/terms#dateOfIssue" + }, + "tenor": { + "@id": "https://trustvc.io/context/terms#tenor" + }, + "drawerCompanyName": { + "@id": "https://trustvc.io/context/terms#drawerCompanyName" + }, + "drawerCompanyNo": { + "@id": "https://trustvc.io/context/terms#drawerCompanyNo" + }, + "drawerJurisdiction": { + "@id": "https://trustvc.io/context/terms#drawerJurisdiction" + }, + "drawerAddress": { + "@id": "https://trustvc.io/context/terms#drawerAddress" + }, + "drawerEmail": { + "@id": "https://trustvc.io/context/terms#drawerEmail" + }, + "drawerWalletAddress": { + "@id": "https://trustvc.io/context/terms#drawerWalletAddress" + }, + "draweeCompanyName": { + "@id": "https://trustvc.io/context/terms#draweeCompanyName" + }, + "draweeCompanyNo": { + "@id": "https://trustvc.io/context/terms#draweeCompanyNo" + }, + "draweeJurisdiction": { + "@id": "https://trustvc.io/context/terms#draweeJurisdiction" + }, + "draweeAddress": { + "@id": "https://trustvc.io/context/terms#draweeAddress" + }, + "draweeEmail": { + "@id": "https://trustvc.io/context/terms#draweeEmail" + }, + "draweeWalletAddress": { + "@id": "https://trustvc.io/context/terms#draweeWalletAddress" + }, + "payeeCompanyName": { + "@id": "https://trustvc.io/context/terms#payeeCompanyName" + }, + "payeeWalletAddress": { + "@id": "https://trustvc.io/context/terms#payeeWalletAddress" + }, + "dueDate": { + "@id": "https://trustvc.io/context/terms#dueDate" + }, + "currency": { + "@id": "https://trustvc.io/context/terms#currency" + }, + "amount": { + "@id": "https://trustvc.io/context/terms#amount" + }, + "amountInWords": { + "@id": "https://trustvc.io/context/terms#amountInWords" + }, + "clause": { + "@id": "https://trustvc.io/context/terms#clause" + }, + "signerName": { + "@id": "https://trustvc.io/context/terms#signerName" + }, + "signerPosition": { + "@id": "https://trustvc.io/context/terms#signerPosition" + }, + "signerEmail": { + "@id": "https://trustvc.io/context/terms#signerEmail" + }, + "signerTimeStamp": { + "@id": "https://trustvc.io/context/terms#signerTimeStamp" + } + } +} From 6da0b8f3b4542d614c67750e476b9067c686c489 Mon Sep 17 00:00:00 2001 From: manishdex25 Date: Mon, 27 Jul 2026 12:32:32 +0530 Subject: [PATCH 03/10] feat: enhance bill of exchange context with additional fields --- packages/w3c-context/README.md | 2 + .../samples/bill-of-exchange.sample.json | 120 ++++++++ .../src/context/bill-of-exchange.json | 260 +++++++++++++----- 3 files changed, 312 insertions(+), 70 deletions(-) create mode 100644 packages/w3c-context/samples/bill-of-exchange.sample.json diff --git a/packages/w3c-context/README.md b/packages/w3c-context/README.md index e7e390a..efd75ee 100644 --- a/packages/w3c-context/README.md +++ b/packages/w3c-context/README.md @@ -69,10 +69,12 @@ The package includes the following pre-cached contexts: #### TrustVC Business Contexts - `https://trustvc.io/context/transferable-records-context.json` - Transferable Records +- `https://trustvc.io/context/obligation-records-context.json` - Obligation Records (BoE) - `https://trustvc.io/context/render-method-context.json` - Render Methods - `https://trustvc.io/context/attachments-context.json` - Attachments - `https://trustvc.io/context/qrcode-context.json` - QR Code - `https://trustvc.io/context/opencerts-context.json` - OpenCerts Certificate +- `https://trustvc.io/context/bill-of-exchange.json` - Bill of Exchange (KTDDE glossary fields) - `https://trustvc.io/context/bill-of-lading.json` - Bill of Lading - `https://trustvc.io/context/bill-of-lading-carrier.json` - Bill of Lading Carrier - `https://trustvc.io/context/coo.json` - Certificate of Origin diff --git a/packages/w3c-context/samples/bill-of-exchange.sample.json b/packages/w3c-context/samples/bill-of-exchange.sample.json new file mode 100644 index 0000000..4cc1cb1 --- /dev/null +++ b/packages/w3c-context/samples/bill-of-exchange.sample.json @@ -0,0 +1,120 @@ +{ + "@context": [ + "https://www.w3.org/ns/credentials/v2", + "https://w3id.org/security/data-integrity/v2", + "https://trustvc.io/context/render-method-context-v2.json", + "https://trustvc.io/context/bill-of-exchange.json", + "https://trustvc.io/context/obligation-records-context.json", + "https://trustvc.io/context/qrcode-context.json" + ], + "renderMethod": [ + { + "type": "EMBEDDED_RENDERER", + "templateName": "BILL_OF_EXCHANGE", + "id": "https://generic-templates.tradetrust.io" + } + ], + "credentialSubject": { + "documentIdentifier": "BOE-2026-00147", + "bookingReferenceNumber": "BK-SIN-77821", + "purchaseOrderNumber": "PO-FV-2026-0912", + "houseWaybillDocumentIdentifier": "HWB-ASIA-44102", + "documentaryCreditIdentifier": "LC-DBS-2026-88341", + "transportContractDocumentNumber": "BL-SIN-2026-0781", + "uniqueConsignmentReference": "UCR-SG-2026-004812", + "contractNumber": "CTR-MER-FV-2026-017", + "invoiceNumber": "INV-2026-0456", + "freightForwarderReferenceNumber": "FF-REF-99021", + + "issueDate": "2026-07-01", + "documentaryCreditIssueDate": "2026-06-15", + "documentaryCreditEffectiveEndDate": "2026-10-15", + "paymentDueDate": "2026-09-29", + + "buyer": { + "name": "Fairview Industries Inc.", + "address": "1201 Market Street, Suite 900, Wilmington, DE 19801, USA" + }, + "invoicee": { + "name": "Fairview Industries Inc.", + "address": "1201 Market Street, Suite 900, Wilmington, DE 19801, USA" + }, + "sellersBank": { + "name": "DBS Bank Ltd", + "address": "12 Marina Boulevard, Marina Bay Financial Centre Tower 3, Singapore 018982" + }, + "importer": { + "name": "Fairview Industries Inc.", + "address": "1201 Market Street, Suite 900, Wilmington, DE 19801, USA" + }, + "exporter": { + "name": "Meridian Commodities Pte Ltd", + "address": "8 Marina Boulevard, #24-01, Singapore 018981" + }, + "documentaryCreditApplicantAgentBank": { + "name": "JPMorgan Chase Bank, N.A.", + "address": "383 Madison Avenue, New York, NY 10179, USA" + }, + "documentaryCreditAvailableBank": { + "name": "DBS Bank Ltd", + "address": "12 Marina Boulevard, Marina Bay Financial Centre Tower 3, Singapore 018982" + }, + "documentaryCreditBeneficiary": { + "name": "Meridian Commodities Pte Ltd", + "address": "8 Marina Boulevard, #24-01, Singapore 018981" + }, + "documentaryCreditDrawee": { + "name": "Fairview Industries Inc.", + "address": "1201 Market Street, Suite 900, Wilmington, DE 19801, USA" + }, + "seller": { + "name": "Meridian Commodities Pte Ltd", + "address": "8 Marina Boulevard, #24-01, Singapore 018981" + }, + "documentaryCreditReimbursingBank": { + "name": "Citibank N.A.", + "address": "388 Greenwich Street, New York, NY 10013, USA" + }, + "payee": { + "name": "Meridian Commodities Pte Ltd", + "address": "8 Marina Boulevard, #24-01, Singapore 018981" + }, + "buyersBank": { + "name": "Bank of America, N.A.", + "address": "100 North Tryon Street, Charlotte, NC 28255, USA" + }, + "drawer": { + "name": "Meridian Commodities Pte Ltd", + "address": "8 Marina Boulevard, #24-01, Singapore 018981" + }, + "drawee": { + "name": "Fairview Industries Inc.", + "address": "1201 Market Street, Suite 900, Wilmington, DE 19801, USA" + }, + "guarantor": { + "name": "Trade Guarantee Insurance Co.", + "address": "1 Raffles Place, #40-00, Singapore 048616" + }, + + "paymentLocation": "Singapore", + "placeOfIssue": "Singapore", + "authentication": "Authenticated by Wei Ling Tan, Director of Trade Finance, Meridian Commodities Pte Ltd", + "paymentTerm": "90 days after sight", + "documentEndorsement": "Endorsed to the order of Meridian Commodities Pte Ltd", + "paymentMethod": "TT", + "monetaryAmount": "128500.00", + "currencyQualifier": "invoice currency", + "currencyCode": "USD" + }, + "type": ["VerifiableCredential"], + "credentialStatus": { + "type": "TransferableRecords", + "tokenNetwork": { + "chain": "Sepolia", + "chainId": 11155111 + }, + "obligationRegistry": "0x3d98717d536Eb8A6062A50241447f6343e9336A5" + }, + "issuer": "did:web:trustvc.github.io:did:1", + "validFrom": "2026-07-01T09:00:00Z" +} diff --git a/packages/w3c-context/src/context/bill-of-exchange.json b/packages/w3c-context/src/context/bill-of-exchange.json index 02ae046..eac1e84 100644 --- a/packages/w3c-context/src/context/bill-of-exchange.json +++ b/packages/w3c-context/src/context/bill-of-exchange.json @@ -2,86 +2,206 @@ "@context": { "@version": 1.1, "@protected": true, - "boeNumber": { - "@id": "https://trustvc.io/context/terms#boeNumber" + + "documentIdentifier": { + "@id": "https://trustvc.io/context/terms#documentIdentifier" + }, + "bookingReferenceNumber": { + "@id": "https://trustvc.io/context/terms#bookingReferenceNumber" + }, + "purchaseOrderNumber": { + "@id": "https://trustvc.io/context/terms#purchaseOrderNumber" + }, + "houseWaybillDocumentIdentifier": { + "@id": "https://trustvc.io/context/terms#houseWaybillDocumentIdentifier" + }, + "documentaryCreditIdentifier": { + "@id": "https://trustvc.io/context/terms#documentaryCreditIdentifier" + }, + "transportContractDocumentNumber": { + "@id": "https://trustvc.io/context/terms#transportContractDocumentNumber" + }, + "uniqueConsignmentReference": { + "@id": "https://trustvc.io/context/terms#uniqueConsignmentReference" + }, + "contractNumber": { + "@id": "https://trustvc.io/context/terms#contractNumber" + }, + "invoiceNumber": { + "@id": "https://trustvc.io/context/terms#invoiceNumber" + }, + "freightForwarderReferenceNumber": { + "@id": "https://trustvc.io/context/terms#freightForwarderReferenceNumber" + }, + + "issueDate": { + "@id": "https://trustvc.io/context/terms#issueDate" + }, + "documentaryCreditEffectiveEndDate": { + "@id": "https://trustvc.io/context/terms#documentaryCreditEffectiveEndDate" + }, + "documentaryCreditIssueDate": { + "@id": "https://trustvc.io/context/terms#documentaryCreditIssueDate" + }, + "paymentDueDate": { + "@id": "https://trustvc.io/context/terms#paymentDueDate" + }, + + "buyer": { + "@id": "https://trustvc.io/context/terms#buyer", + "@context": { + "@protected": true, + "name": { "@id": "https://trustvc.io/context/terms#partyName" }, + "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } + } + }, + "invoicee": { + "@id": "https://trustvc.io/context/terms#invoicee", + "@context": { + "@protected": true, + "name": { "@id": "https://trustvc.io/context/terms#partyName" }, + "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } + } + }, + "sellersBank": { + "@id": "https://trustvc.io/context/terms#sellersBank", + "@context": { + "@protected": true, + "name": { "@id": "https://trustvc.io/context/terms#partyName" }, + "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } + } + }, + "importer": { + "@id": "https://trustvc.io/context/terms#importer", + "@context": { + "@protected": true, + "name": { "@id": "https://trustvc.io/context/terms#partyName" }, + "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } + } + }, + "exporter": { + "@id": "https://trustvc.io/context/terms#exporter", + "@context": { + "@protected": true, + "name": { "@id": "https://trustvc.io/context/terms#partyName" }, + "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } + } + }, + "documentaryCreditApplicantAgentBank": { + "@id": "https://trustvc.io/context/terms#documentaryCreditApplicantAgentBank", + "@context": { + "@protected": true, + "name": { "@id": "https://trustvc.io/context/terms#partyName" }, + "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } + } + }, + "documentaryCreditAvailableBank": { + "@id": "https://trustvc.io/context/terms#documentaryCreditAvailableBank", + "@context": { + "@protected": true, + "name": { "@id": "https://trustvc.io/context/terms#partyName" }, + "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } + } + }, + "documentaryCreditBeneficiary": { + "@id": "https://trustvc.io/context/terms#documentaryCreditBeneficiary", + "@context": { + "@protected": true, + "name": { "@id": "https://trustvc.io/context/terms#partyName" }, + "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } + } + }, + "documentaryCreditDrawee": { + "@id": "https://trustvc.io/context/terms#documentaryCreditDrawee", + "@context": { + "@protected": true, + "name": { "@id": "https://trustvc.io/context/terms#partyName" }, + "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } + } + }, + "seller": { + "@id": "https://trustvc.io/context/terms#seller", + "@context": { + "@protected": true, + "name": { "@id": "https://trustvc.io/context/terms#partyName" }, + "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } + } + }, + "documentaryCreditReimbursingBank": { + "@id": "https://trustvc.io/context/terms#documentaryCreditReimbursingBank", + "@context": { + "@protected": true, + "name": { "@id": "https://trustvc.io/context/terms#partyName" }, + "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } + } + }, + "payee": { + "@id": "https://trustvc.io/context/terms#payee", + "@context": { + "@protected": true, + "name": { "@id": "https://trustvc.io/context/terms#partyName" }, + "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } + } + }, + "buyersBank": { + "@id": "https://trustvc.io/context/terms#buyersBank", + "@context": { + "@protected": true, + "name": { "@id": "https://trustvc.io/context/terms#partyName" }, + "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } + } + }, + "drawer": { + "@id": "https://trustvc.io/context/terms#drawer", + "@context": { + "@protected": true, + "name": { "@id": "https://trustvc.io/context/terms#partyName" }, + "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } + } + }, + "drawee": { + "@id": "https://trustvc.io/context/terms#drawee", + "@context": { + "@protected": true, + "name": { "@id": "https://trustvc.io/context/terms#partyName" }, + "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } + } + }, + "guarantor": { + "@id": "https://trustvc.io/context/terms#guarantor", + "@context": { + "@protected": true, + "name": { "@id": "https://trustvc.io/context/terms#partyName" }, + "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } + } + }, + + "paymentLocation": { + "@id": "https://trustvc.io/context/terms#paymentLocation" }, "placeOfIssue": { "@id": "https://trustvc.io/context/terms#placeOfIssue" }, - "dateOfIssue": { - "@id": "https://trustvc.io/context/terms#dateOfIssue" + "authentication": { + "@id": "https://trustvc.io/context/terms#authentication" }, - "tenor": { - "@id": "https://trustvc.io/context/terms#tenor" + "paymentTerm": { + "@id": "https://trustvc.io/context/terms#paymentTerm" }, - "drawerCompanyName": { - "@id": "https://trustvc.io/context/terms#drawerCompanyName" + "documentEndorsement": { + "@id": "https://trustvc.io/context/terms#documentEndorsement" }, - "drawerCompanyNo": { - "@id": "https://trustvc.io/context/terms#drawerCompanyNo" + "paymentMethod": { + "@id": "https://trustvc.io/context/terms#paymentMethod" }, - "drawerJurisdiction": { - "@id": "https://trustvc.io/context/terms#drawerJurisdiction" + "monetaryAmount": { + "@id": "https://trustvc.io/context/terms#monetaryAmount" }, - "drawerAddress": { - "@id": "https://trustvc.io/context/terms#drawerAddress" + "currencyQualifier": { + "@id": "https://trustvc.io/context/terms#currencyQualifier" }, - "drawerEmail": { - "@id": "https://trustvc.io/context/terms#drawerEmail" - }, - "drawerWalletAddress": { - "@id": "https://trustvc.io/context/terms#drawerWalletAddress" - }, - "draweeCompanyName": { - "@id": "https://trustvc.io/context/terms#draweeCompanyName" - }, - "draweeCompanyNo": { - "@id": "https://trustvc.io/context/terms#draweeCompanyNo" - }, - "draweeJurisdiction": { - "@id": "https://trustvc.io/context/terms#draweeJurisdiction" - }, - "draweeAddress": { - "@id": "https://trustvc.io/context/terms#draweeAddress" - }, - "draweeEmail": { - "@id": "https://trustvc.io/context/terms#draweeEmail" - }, - "draweeWalletAddress": { - "@id": "https://trustvc.io/context/terms#draweeWalletAddress" - }, - "payeeCompanyName": { - "@id": "https://trustvc.io/context/terms#payeeCompanyName" - }, - "payeeWalletAddress": { - "@id": "https://trustvc.io/context/terms#payeeWalletAddress" - }, - "dueDate": { - "@id": "https://trustvc.io/context/terms#dueDate" - }, - "currency": { - "@id": "https://trustvc.io/context/terms#currency" - }, - "amount": { - "@id": "https://trustvc.io/context/terms#amount" - }, - "amountInWords": { - "@id": "https://trustvc.io/context/terms#amountInWords" - }, - "clause": { - "@id": "https://trustvc.io/context/terms#clause" - }, - "signerName": { - "@id": "https://trustvc.io/context/terms#signerName" - }, - "signerPosition": { - "@id": "https://trustvc.io/context/terms#signerPosition" - }, - "signerEmail": { - "@id": "https://trustvc.io/context/terms#signerEmail" - }, - "signerTimeStamp": { - "@id": "https://trustvc.io/context/terms#signerTimeStamp" + "currencyCode": { + "@id": "https://trustvc.io/context/terms#currencyCode" } } } From 04cac0603a98cc35c4725acd4edfe30b870e6bd5 Mon Sep 17 00:00:00 2001 From: manishdex25 Date: Mon, 27 Jul 2026 12:59:49 +0530 Subject: [PATCH 04/10] feat: add sample obligation credential subject JSON and update README --- packages/w3c-context/README.md | 4 ++++ ....sample.json => obligation-credential-subject.sample.json} | 0 2 files changed, 4 insertions(+) rename packages/w3c-context/samples/{bill-of-exchange.sample.json => obligation-credential-subject.sample.json} (100%) diff --git a/packages/w3c-context/README.md b/packages/w3c-context/README.md index efd75ee..f1c237b 100644 --- a/packages/w3c-context/README.md +++ b/packages/w3c-context/README.md @@ -82,6 +82,10 @@ The package includes the following pre-cached contexts: - `https://trustvc.io/context/promissory-note.json` - Promissory Note - `https://trustvc.io/context/warehouse-receipt.json` - Warehouse Receipt +### Samples + +- `samples/obligation-credential-subject.sample.json` - Example Obligation / BoE credential subject payload + ### Context Constants You can import URL constants for type safety: diff --git a/packages/w3c-context/samples/bill-of-exchange.sample.json b/packages/w3c-context/samples/obligation-credential-subject.sample.json similarity index 100% rename from packages/w3c-context/samples/bill-of-exchange.sample.json rename to packages/w3c-context/samples/obligation-credential-subject.sample.json From d94243d781fc5d74406cfc69e48cb9c0168cf24c Mon Sep 17 00:00:00 2001 From: manishdex25 Date: Tue, 28 Jul 2026 11:01:50 +0530 Subject: [PATCH 05/10] feat: update bill of exchange context and obligation credential subject sample - Refactored the bill of exchange context to replace deprecated fields with new identifiers. --- packages/w3c-context/README.md | 4 +- .../obligation-credential-subject.sample.json | 111 ++------- .../src/context/bill-of-exchange.json | 229 ++++-------------- 3 files changed, 78 insertions(+), 266 deletions(-) diff --git a/packages/w3c-context/README.md b/packages/w3c-context/README.md index f1c237b..8f6c787 100644 --- a/packages/w3c-context/README.md +++ b/packages/w3c-context/README.md @@ -74,7 +74,8 @@ The package includes the following pre-cached contexts: - `https://trustvc.io/context/attachments-context.json` - Attachments - `https://trustvc.io/context/qrcode-context.json` - QR Code - `https://trustvc.io/context/opencerts-context.json` - OpenCerts Certificate -- `https://trustvc.io/context/bill-of-exchange.json` - Bill of Exchange (KTDDE glossary fields) +- `https://trustvc.io/context/bill-of-exchange.json` - Bill of Exchange + - `https://trustvc.io/context/bill-of-lading.json` - Bill of Lading - `https://trustvc.io/context/bill-of-lading-carrier.json` - Bill of Lading Carrier - `https://trustvc.io/context/coo.json` - Certificate of Origin @@ -85,6 +86,7 @@ The package includes the following pre-cached contexts: ### Samples - `samples/obligation-credential-subject.sample.json` - Example Obligation / BoE credential subject payload +- `samples/bill-of-exchange.md` - Form label → property map for finalized BoE fields ### Context Constants diff --git a/packages/w3c-context/samples/obligation-credential-subject.sample.json b/packages/w3c-context/samples/obligation-credential-subject.sample.json index 4cc1cb1..996897d 100644 --- a/packages/w3c-context/samples/obligation-credential-subject.sample.json +++ b/packages/w3c-context/samples/obligation-credential-subject.sample.json @@ -15,96 +15,31 @@ } ], "credentialSubject": { - "documentIdentifier": "BOE-2026-00147", - "bookingReferenceNumber": "BK-SIN-77821", - "purchaseOrderNumber": "PO-FV-2026-0912", - "houseWaybillDocumentIdentifier": "HWB-ASIA-44102", - "documentaryCreditIdentifier": "LC-DBS-2026-88341", - "transportContractDocumentNumber": "BL-SIN-2026-0781", - "uniqueConsignmentReference": "UCR-SG-2026-004812", - "contractNumber": "CTR-MER-FV-2026-017", - "invoiceNumber": "INV-2026-0456", - "freightForwarderReferenceNumber": "FF-REF-99021", - - "issueDate": "2026-07-01", - "documentaryCreditIssueDate": "2026-06-15", - "documentaryCreditEffectiveEndDate": "2026-10-15", - "paymentDueDate": "2026-09-29", - - "buyer": { - "name": "Fairview Industries Inc.", - "address": "1201 Market Street, Suite 900, Wilmington, DE 19801, USA" - }, - "invoicee": { - "name": "Fairview Industries Inc.", - "address": "1201 Market Street, Suite 900, Wilmington, DE 19801, USA" - }, - "sellersBank": { - "name": "DBS Bank Ltd", - "address": "12 Marina Boulevard, Marina Bay Financial Centre Tower 3, Singapore 018982" - }, - "importer": { - "name": "Fairview Industries Inc.", - "address": "1201 Market Street, Suite 900, Wilmington, DE 19801, USA" - }, - "exporter": { - "name": "Meridian Commodities Pte Ltd", - "address": "8 Marina Boulevard, #24-01, Singapore 018981" - }, - "documentaryCreditApplicantAgentBank": { - "name": "JPMorgan Chase Bank, N.A.", - "address": "383 Madison Avenue, New York, NY 10179, USA" - }, - "documentaryCreditAvailableBank": { - "name": "DBS Bank Ltd", - "address": "12 Marina Boulevard, Marina Bay Financial Centre Tower 3, Singapore 018982" - }, - "documentaryCreditBeneficiary": { - "name": "Meridian Commodities Pte Ltd", - "address": "8 Marina Boulevard, #24-01, Singapore 018981" - }, - "documentaryCreditDrawee": { + "electronicDocumentIdentifier": "urn:uuid:e6f4b2a1-9c3d-4e8f-a7b0-1d2e3f4a5b6c", + "referenceNumber": "BOE-2026-00147", + "amountInFigures": "128500.00", + "amountInWords": "One hundred twenty-eight thousand five hundred United States Dollars only", + "currencyCode": "USD", + "blDate": "2026-06-28", + "placeOfIssue": "Singapore", + "dateOfIssue": "2026-07-06", + "tenor": "At 90 days sight", + "payee": "Meridian Commodities Pte Ltd", + "drawnUnder": "Documentary Credit No. LC-DBS-2026-88341 / Invoice No. INV-2026-0456 / B/L No. BL-SIN-2026-0781", + "drawnUnderDate": "2026-06-15", + "issuedBy": "DBS Bank Ltd", + "drawee": { "name": "Fairview Industries Inc.", - "address": "1201 Market Street, Suite 900, Wilmington, DE 19801, USA" - }, - "seller": { - "name": "Meridian Commodities Pte Ltd", - "address": "8 Marina Boulevard, #24-01, Singapore 018981" - }, - "documentaryCreditReimbursingBank": { - "name": "Citibank N.A.", - "address": "388 Greenwich Street, New York, NY 10013, USA" - }, - "payee": { - "name": "Meridian Commodities Pte Ltd", - "address": "8 Marina Boulevard, #24-01, Singapore 018981" - }, - "buyersBank": { - "name": "Bank of America, N.A.", - "address": "100 North Tryon Street, Charlotte, NC 28255, USA" + "address": "1201 Market Street, Suite 900, Wilmington, DE 19801, USA", + "authorisedSignatoryName": "James R. Carter", + "signature": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAosAAAF3CAMAAAD6jPHaAAAC9FBMVEUAAAADAwOxs7u0uMrDxuWrrrYDAwPFydacn7kFBQUJCgrw//+lqLcCAgKVl6SAhpEEBAQBAQGRlZ1+g4uDhpaGi5sDAwMBAQECAgJzd4w7PUw0OEVscX8AAACqsbOlp6ssLTicnqhtcHgBAQEjJjIvMT43OkY3OUaLnKc9QE0vMDYxMz0kJi2Qkp2XnLg/QU5BRVJiZXRTVVwvMj1zdox3eospKzIzNkYoKzkxMj8qLTcjJjBKTFo6PUonKTYsLzs2OUYuMUAgITAkKC9bXmhpbX02OEUyNkNDRlM9P0xCRFEkJjc5O0hKTVmIi5ktLz8uLjlGSFY9QE1DR1RSVWJCRVMbHisxNEM+QExLTlxDRVE6PUkvMT5SVmM6PE5DRlKAg5BKTVlOUV4mKTRUV2UoKzs2Nz0dHyxHSlcwMz9HSlZNUFweHyZRVWNGSlU3OEJRVGRQVGEnKjY/Qk5jZWo8QU8ZGycoKTZaXWpAQ00sMDs/QUc3OkE6PEiGi5dNTlFLTltZXWlZXWtNUV8xNUE3OEITExWLjpxbYG9/gpAUFSFYWmZiZHZiZ3kYGBwYGBtmaHYzMzwrLDX///////8sLDImJSooJywjIismJTArKjUkIy0wMDYeHSIrKjEoJy4yMj0wMDohICkoKDEzMzkgIi4bGh8dGyEuLjMvLjkkIig1NT8pKDMqKS4gHiQrLTkkJCkuLjUmJS0qLDcZGB4tLzwsLDYmKDUmJzMyNEAWFRseHigrKTAVFh8hISccHCUiJDEfICcgIyoUExkfICU3OEI4Nz81ND07PEg5OkYjICY8O0QoKzYYFxw0NkMbGyIdHyokJzEzMTcjJS0bHScfHiYZGCEuMT9AQEkYGyMSEhcnKDBKTFg6OUIdIC0VGCIYGyYoKjMhICUeHSQQEh0/QE4tMTgkJi5ISFNOUFxDRVNCQ04/PkYpKzE3NTsPDxRFRExTVGENDhgjJjRXWWc1OEcaHSteYGxjZnMICRBpbHhwc3+v3XtWAAAAlXRSTlMABw4HBRIOChcWCgULEh4uHSwXNSEpJxkkMf7RNiAbJO4oPjHp0tnKI9H15vcwE8KyOx7aPCf38/Ls4tzAuObewPLw7jMs69vPybj246UQ+enf2cGegfPj4bby7Min9egc1svRxP714Mq4r5P4t5rj3a/YoxXp5smqjb728ao7J/M9tumuky5R3P3w7bfMODPoW2mQYEx8vfkAAF4ISURBVHja7N13UJtlHAfwLxlsoWVUEFDosrWtdba1VrtUFG3Valvrrnt77r3Oded5jvPevCPJ+2ZCSAgkoZBAGEmgSAsINIEObIAWoQ5cVTz/c5zrPBfkfRPU5/Mnx72X5J57nuc3nucFQRAEQRAEQRAEQRAEQRAEQRAEQRDEf9yNGRkZG48BQUSbXIZ0PLH5onvvuKZw4RUofG/ve0+vxcK8vLuAXMhBEFEhy8fWrde8uPc4VH3wnrumfecuHPfxex6w77XXVLUft/ySbTi1SAHEYXqbgVkg/r3k5798M2zGjnLs/PwLvY6r23fkcx3H6VDOMbp2dOjeP8Ltqqs77pHrMnOzpt38mIwfKGZBIVMqgbREOV7BLDKP/xttvHN5jbEBbYxFA56ywCZwHR1teFeveXef3tnRZuDVwmE4TZTa0Nm+/IabzslVYBqJxwyk5G4+Zw0uuv3cLXPXr1u0ad5FAG5+bDOQCuLf4/wnL52wcRTfZsLnnx/ssNlYvc42ypVXAcZdH+qMek4P2742k0aoreBYczXce1eciAxMGwWyl88pPqnT5+k011T5UOWugS9YV+MJ19Rcun7eldkg/h02rump0eub1RA4lm1vLz9SzVXvWn7DDbhq+y2vb0fx9k3333+Nr+75p5haVr9Pj11VVSGPx+dbiOmyc1TmXmgOmz3VxjEMVwyXj+6ss+nKbcMDnsD+QYyic3kxiH8BBdBcbmMaDBpbp9lnXgFs37T08dkogvJkyOWJMkCpRBqQmX3dTfPPQvsuF3aqbR1m867lm8/ENCDP2HBSqHtgwOk8jHc1TJORMb2r0Tj1GtAw0UanbszXa34MxLT3+HG1Jjg/sWj6PL7V9y1JS8xQIiVpDn6nADMAyJF/3VwPZ2DxYe2HtoqdhdgY26kxDsjMe5pxWMYdrQAD0AaLYKesBhVMFqrJ3mQFrXHyBnc1LgcxzVUwqjaeB+y35Z2hxPdmxGEG/sIJAM6q1dlMAt3R5lmTiFhKQ96yJppS2e2WgLEf8FJe3rts8T2Fy2zX4zasXqRhGLsG7x9p07fuvQzTKuAifisBy3oPg0eXkV25OV8JIAn/QHxCNh5Uc9Qnlj42fCIKEBvHYAHmql08Kh2UvXVszHcSZmfie7PT01GUn1+ENJlsdgn0wWYHvecTYNS3hWR5pqlcuDleqNzBu35ZiP9RODIHgAxXCXv2mMy+IUQw20S4Oq8cHOObLIDGfqBncR5OlQHHogAoyMH3ZiEuGcciFVgxNqZVfYqBXhzdCihmgphuCjkcFJx+LCvJBuLwT6fFn/9x6WIwFbaQ7zXERCKe9gdoutLe0Mo0LkXuw384xAp+TOPj7EBAi9ExMzrd2EDmxukm7X7eRfG8yzv3bhQA8ZiU5FlQ5C/lDBVV8K3LR/QlnDM8RqkcKmiFZWdjI4A/+Q5JMwFk3IfRIELD++rcvtugAGn2mFbWCzQcjGEZ0uWYg8krABLWDLIGturo3DREW9a8gL+0tYkGuvNm4x9Iu6twODjaDvjwFE4DMZ2wAngudA1eAeIxNckJd+nLmfLqmmJE2Qtzg7yAQxYEgATM/PswB0hNf2DFWIXDtHOgMwxi+tiMWjs0rGftqXOQjKmKz0nZMMb4B9wTW4sQPfEzZXn6ATSoLIZH8pCCfyg5pegWpwP2sXGEF2bPADE91KkdfX51z+nYiEgUIOXKp+xUdY/79rQkRMuxQLXG2UCXGgGlYhI5IKTd1ESZ8Em7+dbTT0sCMQ1krDX4XU09V+FkzECEFDhY31gTCiOKEi4MCg6eaTDge0mTGYwLQNkpjFe59+JhELF32i1GDSPoihdAHP5Go7qHPUcWpeA0Hhj2azVqzoupuAS1B/VczdoFIGJOjs+bLBj+fsuUBFGsMjo5jivMRhTMBBK3BcdpCpiY2gYjffu4wHGo2L6E5LxjTf64x9m6o/FmJURz9VdH2o4cQXS8eadPDz9Trrv9TEzJgu1GvKuuqNoEItb28tSO5uLzxSvG5cDm71d7EZUMck7RU0GTBUa2EJiDKSlCh05fXvM1KU7H2JK17B7+8CWvQkwLde22XbduSoD0sq7ywET7Od+VCcfET/U3uKHaqBl2X5AOIoayLht0UnzF0hSIKfsClt/XGb4SURA0akFh6ERlRJvOASF4dAKkFhhLJSEYTNSWUyGmOCDgomqGLsiGxBRn3MarLCa+86wzEYHnMN4axMj8RJLxjp1UcAyEPqRCVDNSH+TVHrf5Okjs7fWlWjvVZFyWH9FZmySM2gO95p2zyViMIS+/u4+fr5wJkRXpXUxddbEMEvNjh6UN3pIEROYq/ziO80E+PQ6P/R/J1zEqK4UNEF3Kwv5mI45CWhtP3wMV7M3IRXJkH/eW1qCr1lNMLpiIISuchu3KmRBfD8uhc6kCUkpd5FCZLG3qPDki5aF4VNdlgogVARrUQAHRxSdeU055h1YkQkq5a5soe2nFrYhUMi5lnKjwLU0AERu32VV7mrEESRBdwk1ql7oaEhvXWmiwqxKPiYu4vcLDN4A9aTaImLjzXYsFxusUkIDiXk7Vbz56igKSmQWMNml5dlCMXd4ZYCwH1b1PykDEQOp6TanFekkipOFSGd1HV58G6cgQABrM5yaK8axbPt2zx/j1QjIWY6Mb9j7vBkhDeYkAz8S6REglCXfru2mBDUMcmgYTd9yFclJ6iQneWd57mRLSkN8r9MEz8QIkc/LKHtjV3D35EEWwiamoWAQiFio1xt7OpcmQhmKpAUy5GZI5ZomesaqYkROfgxgyqylOHVp3PIjo21AG6I5CMo/7YWA8d0MqrwBOqqECkCdDBEsuHqitdSNrZg6IKJMBQkXNiiWQSEoJ4DS6H4dk5g+4aGtzDcSRVhhk2TAAcggr+hheYNxXJkjVJ6VY2u1Uq83nQiq5AZOdBneuMgdieGf1OKeDm1yhHAPr36WY3kcSIZm7uo1g3lsOqby8XwvVPv0aiOQKqparnlidBSLazJzaa0MK4iCVZl5gq92zIZVAtyDwLESjAVvTuZVc5h19tXqT+hIlpFPECEx5OAzJHNZQDcbFGRDJkiPYd+SD4pNBRNfGxQMaxgA5JMT08X7UQSLKRaBg0V8igzhmPYv2L755f54S8SCi6RlOELzmByClPoaqNUMq2SgzwW/IS4BIit765ouvPsojsUu0nevk4d0vaf5iQzn62eqjkEbcGQM0xQ/otikgEuVbH+Kj6ivIwdQoS93VYtFD2n36Bq5Z/QmGIJUgBUHthmhOeOsToye8BkR0nTrWwqtrkADpKGDu33lk38XpkMQcsLxgYNem50As4xwb7ikBEV1PlDfsZq85HhJS3DXYz+p6T1dCEooTu1VCY+ha8R54h2OgFu4rQUTXnQZHpa4QUpJfq67tw/5VqZDCzOPXOqk+bBJxib5kHJzHDCLK9jZrKPV8JSSUuhr96lBIqvBoyQdq2sAgAckQR+ZJn5p0QD6IqDpteKDBNfGAIgmSSTr/mmbWax65D5KYA721zIV7T4N4LJqOqgdJCTDqnBb/ECR1BsuyzeEJzIAk7nNSlKDeCrG8sk3YI5RXkbvGou3lYeFThCGlN69o3mFQj6ySKnRZw4NWh7c+DLFsR4OAi09NBhFVd9Zhj/MopJS4otHQuH8EEsla5LSrGN9FKaKt+U8xVp6be+axIKJqLgwqAZmQzhz4DLy6egjSOBbrKfAVNSLe1feeUTAOkUx39A07rcLaBTmQSA6OvwB9poFg6JlZkMZql503VF2RBFHMkd3UXsFVDIGIMrnZw9OGi1IhkXikXDkx5NJiaHEmpJFeCKeJFbELu87M1WJZLojoyuiFQWVclQLJKOd3soLDj1WyAkij1qGG210ihzgWddrq4JtHmhejzleu1lYUp0BCLFPqaB4B4iGRptog3PhJAZIjmcaBTj3QeRaIqAsZKZqdL4NEkpSLqisMgqHl0awCSCEOoDSUzdOJHykjDsNWVVPcUfO95Jax6POoBZW6WIY4SOHYBDBMv6tp4EvIIY2UBwYE507zWfheAi7H2lxE4oydXIetBvmkpTvqHqgxCjRXnAApJP8YpmsdtL+55wSJRvsxwKgDA5h/chKAvRODj6ZhymYWyDaxroPOvSVKENF2RyfnUAHyGZDCzNlfDneraId68NpUSESOcZXAVz2WACV2hSe2ICWigV1ndPL+renkxoioy7gszJk07DwZJJE41+2EBRYGC+IhkZSFrSpVf+/NWcoTOzurVyAJkdhapd8DP1JARNuZW8xqw25Ooru0FadM9LqaKnfQzds2RrDM/zX5oiaNZd8Nd+Aitzt8MSIS94TbXW5XnU4OXcUGpcU+SGGOAkdDXn+D1np4ZSKmIglz8PfWBzR2tLHLfGHfBYhMduFelimrBBELW3RtKroNUpiFp1ivi8dhLE+fdJ4GOQpknSfH38vHgMVOt3a0m31mREa2tEpXgaHiRBDRl7YuyNCVhyCBhA3VI67DFNRgn5lKRIIrCtduw8l/f9nXSV5e29UKjzm8Oj3C90/X2nQ692IQsfDcZb285ZAKSIao5iB9W9jLAGiE+RwZJuuMNesGMTKEkbmb8xPxl44vbMbu3Yfqe/DgbESk6Jpa6HWdG0gPbUykrQ84rVCdATHNABTY4nMb0NjnRcVjSkzaxSMTQf84DCHz4MhK/JWk4wt5QWUFcE5iMiKQg/nwqnuG80DERNaKIO+w2+9NmAkxKa8b6qllG5uZL/c3QolJu6y/uY9uVY07WrFjpHH9Sw//VUZQ29V1yPolzk5ERE5YOIxgOxZnkhba2MiYGzBYrZpNx4taFUm/HWBMlH+gvid8s2zSvbHykv56qOjdqrKWrvpDWt7Q+GjaMfhTB1rott1ozEaE6oaDgWAPiFjJ0/G86uAj2SKW/dJLLoaqqbRL21wfMp+ehinQHtiNrvrdByqt2voDpeAHH0TSH4XbM5BxYam2vrShS71SFmFVe5fNYqJC5AVDMRRwCTR9ywKIJmvl4GiDtqyMp5lB86b0AkySsmTEiLJS7aEdXaUt9YC2q76lH7dn4Y+kzWeaylDaxTRDhogs7wloLIG55N0FsXNKwGHROsQ7opeK00N+mkalykLBuzITk3Z8oUdP7y6tRHf9Z6+9tr++29p6oAUjDyEHv5OQ/sKqYRfKWkppCiWpiEDmDajeHxjfvxlE7AyqQVvE6tZT5AKB1tKmQzzgGBu6+YTJxwGppwwaKrU7SgE8+lDajVgZauz+/nnedadiBn6VPCvp5FMKj34Jv7asvrLSxd6VEkncclWPPrjTv3gDiBgKGy0q60KIIP6NZ+exHEVTVkdZPV8/uPyhKZRqcNegq7ISKK0fWZMIHIP0vMCACpXdjTcr8Rs5BQvmTYTQCAE7DpRp2g5CjimTXcSGRwdCvS8pQMTOthqGbsCmxDhELHMV9nsHmlpBO6x9GAJOS8bkbWG1qCxFS89rAOLjAczzDlKq1qGLn/i1TB0PBRaFYB4cOrBlcVmL1SI0LsWUyUvaD+pH63Aiqf3FUvIpPQxtoR8RoWkWi3vUfdDSh1q7Woy9p081ltgPGqWlh0e+/KX8kfsguqwHEJqHX6VgWXgo1GioX4lX7yi1lgkslJi6dzvGGveSJHeMpd3maW3AihNwLCIgz95W6GvpLjvE067DBjXb+WQipmTBehhKVaVWi+328/GzDBzSqr4N4Ze/pOSfcikQRG/3o3i46A6DoGLYB0/D1MivvDTgcAZ9q8kbNGLsxts6x5sCnZmYupQbN8Nn9vsrrZValbXS4PWuuzMVU3NtyN9U2WWhd1yG33j2HpV2fATX5gDH4HvnLA5gLBBovAdPyCG7yKu2qrmtCZii94JGG6qvOoGccImxBW4PpRrzYCrikgDMPnH18qHQd+zdZ3hTVRzH8W+6oaUFCmIB2bJEBXEyFMWN4kZBxYGIA3EgDtwTH1yvMkpzm9JxLwQS0vZ23TYJ7Q0ggTRQ2kJSoKUtqIgEi+LTd25sgUIH0vq0nyd5k/HkRU5yck7+/9/BK0gSgls1pWRO5qYoWilta4VL63ZL5Y3m/zjRIxRWHSMY6Am3UZ5RCEWzGBQJIS9jKNm4dnkorRF5P9tXarc471rUVT/b7rL26QscO6bSGpcN45ZjOWlbMxKxgF7QO8sXvP7AFbRWyH1VB1yokpUFNGKWJHtl5azecB4MSTZImDKSb/g4CgASBR3ZEyNoufNDn9twZI/FWFTclc3dARRtN1ksBwZE0lJBMKnK+W2K1iGYbWZLtbvaWwHRtMGE6bhUqyIKnEhw19TWHqMbQUxHJ1szJOdygroBMPRKyW1iOj1psZA7f8hOTdWvZB5o6NK+btxbpK3+8QDhtEw41y3J9GHB6tKh05mrbRZqlhJJW0SMLC10uK16z8gYGooeJ+pq7HWVi4KXXYeqSBbyk5d/EgVAP/qOlcSyJCJaMxSfXktqsmFI14moHcLerXorFZNC6UFzdCckcjgxLz+0PXd1vgmL3uqutkrldkOyYcHi3rRN8MgKEb1VUe8MoaHBCyU1oJTHs/iaBEx7tMkpaRcSfPzesWad4dDd0bRUEFclbVydv+0aOm5IhAbgVTqFPmh1Opd2+miaJ3TCIzwwZu/abCGFAocV3LrqgpRNvhvmcSNt9qPTJRbo/d6pNNAt+HnlsDEVkscmOgrL8kmu5fUGleixGRZ3xpY7BtEy/Xhuw4pv1lA6CS6go+oVMjRiWSeJmbpkXPqeXQ7jZk5D0x2Y+V4QIX24du8xctYWWNy6ArMlsUCHvkCUnAsWDw7X0DxRwZwohMsv5/k+j1NbhwtJVqZF0dBUvyiYwCp4DiWaUsrgkSsaFtNqE93ulAcjaJkIdq9I2JSSx42RdNTO/F5Bg/ny4s7S8zBzeoVllQDjw4fTBM15fB37xoPj7r5wxLqtuaQlpOF2u606s14nCdVOLwAamkNDNNCbRobDmMxtpfZZ0494TXoRhbLGOSSR2GXBInlEyRJQTPmlC2novKmpoGVWdE9aInrUD6vTC8i/YRi96Ig0PUPCATpPmkrUaztWJZqlfbeF0rTRs3NIy9qalrstKdmZYZITzaA3Yyjco2XGtJhBNFfMgLfX5XH9tMc1NPA1dyk+e4WqGgTVrxPrVTuNDBwHNoFqQFeWveLFN9+joVgjJTUp8+NoifApP+zK0G7a89CbQAcLie8JQDjMZHTnqtb41pJaInDNBzTpubGl9h1FRQnOMgw6s4DDbdYpyaQm5FaNmDeM5ht69TFfba1vL9E0EvGQrAY8oqiucgmCFBDLF/TmHxou6DvuW2wOVZStpo0ZlfMGRtJIjLHEKOYfpfm6EToqa9emEi2vEDycDicEGM2gDvwz9r+x9Nt0ndGckkZTIu5k+44dFTadQ7C5zDqztApRhvJv0lhAUDgtsb7IoT1QUVs3NarRK1yKAgElEFAFySoDdROOLzDgCupVl+IJBGQ5+bV5PE5jkWwxYubo+Eia6/ygaVvXxbOaCwfT4fSCwaGda3I+7q5ybUmBcccoTi3q2bx1FJpsepvDptfZHFoHXoszO6FyyDT60DIX55c5HPoUR841oY06+SpVWZQDoPqxOkR/wF+59Cu6EwacT++p2D2ypPjt9VPoHcyJ+ty34RCf76qi+WI+XLMiaV1V1bQOeLLVJaPf5bMvGXTJZXQ+H67WCjoHk3tzSqHLxm0vNJW4VuHQ2QQBIaOosLJqxoh5fUNomX7gdMmKzWZvGMx+PiGLK1VRrBYlxeHSIUiSIjrr/+6BCunNxDqfQ5Zloa6qanwIJwt/Y04q332z97ZwmuuO3NzchJWZ8y7pSUcTAUuWvERnlbSrIPFHRvTl1C6+2elMyCh3iYrX4yoqx0fla58MjoiixSJRXFZFUUQqL+U4DTf4HFZPtVmPIGfIHimxQGfxMvkTBi5l6XWldj9WRQ7gq2piiMfeesS9aWNe83P7nt6UtDYhYfuFdChh/YaH9333y7lPLYvotDW9b+5CW2BMmBFLUzIUAzU1hTh9FZXA7XxAq4TfbbcKos4tKKWz+NfAqjpVARkDeEVRcusIKP56tYq6ytIiU4UHj+hX6utqmw6g+C7dVzkqmDPrQdDs/ns2phqyt46nI+kFoTz12dyrXoiGTlu9NnDOitSSEpr+82HoWFOCk3ycVaU33MZAWm3QzQGP6JE8AtTdyb98RYpkFYT0LXpV9UhyQPUTkD1qba290pkMeHR+VVFr3+HUgsYkUsPBKTTHsJFrTMlGt9FJeIdaQEcN47G5/R9+hijovMEVjz+UtKlEb1o36jJOLfi5Gfm1VbXHJi9dHM0Z9DvNhzr2mXKrTlVFBIFGJ5xV1SFVi/5Ail5V5YAfpT5APRKK3W7HLqoeVZaVKpqgmTlyu4t4bg2nGZZUbNpIRvmMUY/TQVwAdOvzxfv9r+JSojrmvvs5c8tKI/rDxuv60JSBMPWdmyI5k27vhUfEDjr1N2zYoNnZfsEqIeJ3+eqePX47i7ALNptLcJutos1zEfMMdkmmJiHf5yz//SJbA9SU1z2HhlObyYGkDVkM4IyiuLkmdctKY/yQDrVhEj6Ye+be9RCdeHL+W9i0+IwjRYd3EUdP2qIXg3jys6sYA1Gc7L0BtQkmXbVHsco2ez0N2L3YbC6JaqunIPAKfT9eSBkFrM3P99UVagv81UJ+7WmC6Hpw7MCavNyLQjm98wfPRl+CdmX2RR3jaOgwIPIrlj312PtLoPendMGQvqfGv2ULbXXxlwdzS7cfPXYXBHOSQRMrvTadpAY8qlz/b/HDBcSVI7rMLlkWBMWmANw5fdLywkRDogz1NTgUeeH4mTTt3dwDK5Myr5/AGbxYYTGaVhnybomlQwiJfvd+lvHRwSUvxHbcqrVzKm7sIYoce1JGRdEmQ79YV+QsUvJL1xdzEg29B6T5awRZ8Xv8gVk0VOmTRQ+egILi4Eb485pstyaXlSletHbGEUXTeg0miXXM53SGw4wfDlRUGGBizPAedAAXf/HS+wfnPjznqpHDukbi32YOMBzYYoFJtMnQpz5Py3DpbGTkV10axUmCH7UbcAj4/Wo9DUROravlj+W1H7+9/ngHoShLAno3Gbuq7lqEhtMIZd/anLT5NCnsfIKYEW9KLlqZs3PeTbS/EMJ5iZ1Hr77jmdl02u3EUxhm2FF06HDKlbTJxU8Xb9BiMdtcjsrbIzmFugyTS/AH/ALzgjUcF1tVKUmCoMgihVwCaODxSSole9yYE4l/ejHdOZ3wJXiz1zGYJmjowQCO5Gu3Orlq/OD238uJ4Kknn2L3fp6JDYoK6dXVafOvuG1eY0nqxngiaT1N7Nz1Wly6asHqUUeO5mSzazOQVb/sYsebDZ4HdbWibJVkodDA33eMHwceOGw21JbevJgzGDxOa8jnypjTnRuc/f0u47bM4hveaf9VS29u3bD1aM78z+gbRPt/MDqW0TMSjcZEU/yACDS0WsSDlTv0VjwC2Gs5SS/uI6VGQcLjqGsc51RXJVqtsl8td9oBNCywOxURt7ngcPqMqTdyJkEPafWGtGKaENZz4JjvtuzSrtmcNqbdm6xCRvPE3Kyd3+RlzXijK3b0FEaka3Xa9I3E0QaRfElAbxYEUfDWPhLOCfpd9mStWuYSCPj984IvaNiKX2sXQHIJhc7lQHCfEZU+g8uDW2/JeJtmCJliXJWck0MTIphh0Bm2JCS8PQXoQfvpRzRP9N+Ztz+POSMJPY8uJxlQatFrNzl8n9AWobdm4lI9yLLX/kh4d04wcEal06MXFIWFNLYNqdoqCZR5mdmHBVeyFayyqnqZ3rwpdYrWQu5RTqaBsKHAlvRNGQnXENW+YzF0IC/1L85Zn82k22M60mZ7h6LV6UoSy7Y9EkwbhFw8xu5RJIek1NlP7P0Pg+ix9rqAKMiojdN2gkbGG2RRVv1quV2ZOqawMDtfKUcpxLftNaJoFn2JybD+5SZKpLfm7WPNyrQhi2hvc4ozj5Jz9aVxXSvnJg29fhUFxkNHJtM2fUu9iiLL9lrfvEhONMyuyAHw19WN6MO/elx+Mx6pWpIEr+x3VmTYy7E7FLPT7pzxOs0lHE73rufxbjTSk7AIHl6/fmdpXtH7Tw6kB2G0Dw0xU15865edzOep+wfSvUPsb3ZMQbds0m88kphy/QTa5KaxPkV2ibW19SN6c6L7KwXcVlFO9h1r+NIMqZekamRVFgVRVAKIglsEnNcSTDP1daTiTHtsNA11h5m8mJvM6ty9OUsevZF20yOCDz/69fv9fD8fupL1zuAdQ4HbUhO/vq2BoDtw6HWOcup9nOSGStGDION01r7+Kn8Z/MCkSjuK5EH1BwIewe+RJQkUhfJRcTRbjM0m2vPm9KWxi8najCFpzYqVE3n1vF60k2he2s3Onazj1q6ReGZDxx4uWVWwOndeMG0QeXthjUMQbRgChfNepZGvH7UjuwWr11NbWbf8pr+fMG1vmg+HRwj4VVxqwC+qfg8Bv0dVX7+EfjRX9BAL/PQDjU1dUrx516bV2aax9wfRg3ZxXgjj7zk4v/iX+TvfZ0IQdM3OZxI1MZXD6Yb4i2ibb+2CZNMhBCCMhiLHY5dRRasiFNbXj+9Od2Ag26rshS7ZWg31iiDLSkD1qIpitV609Ip+LSkAvMiSumbXLzQUd19x5n7S2bUCgqEbGs4lDQBRcbe/tDsvq3h+cfEdvEeX5piWREqqFibQJmmlRpsgin6FaI4LGw4c9tukatVjlWxOb93ky4KCiXh0YTlyaoERF556VDxuz++PUP01417/AMJovtCR1SmsiecfPYdz59W58Wv2ZaZlbh1Ae5nJlPf3b9iclVP8yz2PxnX64sRm6kbVyo3pRlLG0xZD9+7NL9Sp/oC/bhENPDDRqTWiEwRJkapVlcrrXhnPiEKrWyWAJJod/tseeQ0ZPSSSVEu4hhY5b0pZmTd5/X2R/CV82MQV2YbVK7evW3fRnUFAT86pHgA3cuvcpM0bktbkbL0XOlf+Q1toIu5OMoIj/5VQWm04g67M9Rn0ohpQ7Xfyr8UL7Q7BgV7WeRRdokuQ7WlV7PDikT2YBe2P3nquCO59BRnldm9d7SvP03LOGoeTW4IAYOiofLKTEhKScvrfS3Av0HCuhce98Fj/vOLVSfFwK4M6WEhKxxZy4fbkDC0pQwbTaucRNCItOUEvyH7Zzt/CuOn+9aWFLlO1VRD9AVUSrVbRVljnLLRVW9xWUW8J+CtGxAH0WToVBsYEdaPlCtMda5h0CQCzb8gl0aRdm7Z3JPTkXOsBXP7k9f0Pzs/bvzPzGuhNl5bQLNrGpi3GtevpRetFDrAnJNgkSRbt9/9zE6/l5K0QZMQAclFCAgazoLDqR4e+WlZ0glSSsK/olb4AEAUMb83oiRxlkA6x8bWZwPPXrk/Q6kzG7/ZdsyiUdvH8rbv7s3PnfOY8QUwnyU48m/os9Bm0kELracLAl+91CCKik2A0EBk1dWF2RnwqZtlC/fRb8G0zSGa9O1GUXaJfUT16qtKmBdE2mqBpiQ60qS8CQ9LWZWNNTWXH5AnBtIOYF+75efdOivs/+DoTOkyz4f/L3aDXboy/sG1bYNvKFUmSZLHw0lgIZfIIu9dlBrPIxu2jCH33iW35dVZ0iG5VJ1SLyfml05/lLNhjLNmz5S1e/mX3+owMAZfvOvoM59wL5TO+Y/P6o1cxqGu50kpRr2w2JOs3FY6gDQbOqiwzW62iiG7WNFjgc66y6FShQJQkXdn0CBj0ISgORTDqTAXWjUcUZnFFEG0XM07SWYzIJpL2ZWjdG6c/24d2cFnsF3P6H/zhh5xfgM7cc99WpYkmq4X852mt8y/oi1MWzKIkSZTZl9t9dlECd0liaqrn21kAxMCFY406o5YUpy931oUxUZwNodNX6fW45S3afUkZ5Vbax9SHdhfvz8r75i3o2/7l4/9jMVlrcRekr3jkMlqp31DiC5HcsmSVJKHG63SKgizrkfysXbhgGH8L7ztl3F2sqVs+chrhnB1RF5lSLVhdqaVbi3jxHdph/Tz6jY/278zduT9v7BhgeNe+dhtcduUKQ0lJesLYGFop6JFMEgRRslkc1R4Br+KV5IADfXn+OGIbtfTHxPL8BII5a3rfI7otBZJQxrrHFt3Euddn9tz9/YvJygKCuv5haaPgifEmwFRJ6yUkOsTqalUWrG6PNVCj4Ef01tmvfP7Ed6c7Z083iJpdXoNk1dt84+6Li+Kci+Gz7/qzLivr4Udju5pYzoJFmHSJiQrLaI3uxL2Yr4BHFV2IkuwRy8uo0YmCM3MyIfSjMQ1nR3cAHt1RXnLI7ZYCE7mxHUJpXmbz7oOZ84vfnxLXtXY+K65ISE3V68mkdaKfWZm8J9Eqm3UyLqPV4y/3mjKqk+sm8zi9+G/NKU9GNLv905dxzsXw5c9ZB/ml+OH7Lu/qYTlLZv7G3p2HNV3HARx/swHjHkJAImGSkXhEKYrm0WWGRgdaaZaWpmWnR3fZfTw9nU9/DHYBG9uEseEYOGABAsquQK5EsEAzxBCpKKPjv67Hbi/asGOv5+Ef/tiz59l3v8/z2efz/Xwmawsyq3L1EyGG0yYcg6qu8L1MtmZDUXbWdnJzv9tz/503xeMhQRANz7K4tumbQfIk732w9QJG3LUvxlpjY7/qugG80dl95tZplW3KMhYJOW3+YZs5mLctuzCbd2s+PKDc3q6vBK4SAeCDp4xOWolc36VWU1iYqbyBESWAjC++6moa6t3AWCAQLzeJoCenqm3QNZuTC3mGKIT8In6Jgp6enp0141dw6aOXzL579qYnz3obgHNi8JRxbKar266VGxTNFGRxVwIjx4/Vy229VufhI8v4B+5D+HcLWl9W9Z7SrJ4s5mSe3fCca+WCOUJ+Fh6ZpjFW5dW9u+dcrgMxBEz1ExDuqUkx/kD0OfGs6gO7UUtlKhQU5TTXMmKCWbey32g0/diceJa3JcztLmuXFH6GvoWTEbzgMh09ui/1WKrgt17R01OCdA/JonAACPVcyPKBaGD0tE/URoWG6r3clnCfNqswM6f8RkZCKIwF+lSuLstSAry5syeoJD/EaPleIjghf1GGwWRprN2/LgEAQdKenvYe6Z49cN95PscOjOf4A0Jud6KTy3abZl4UJ4B52VuL1TpGRgqvD/W6rB2qdKYH/1N3rP67+SJXKvuMpV9zEmEzK2W06vbXIhYCVBjzpc3NPZVsmo+H+QCEAqX9R2Irqi2AEAi+ZMvWj5W78cWTggBErP7qcP9Qf3/Tgn/WWo7/GLm9za6lfImIExFSiqZkd+XuHbvXAGPW7jAX5fQ0S7l0AiMh4OUMvjpiMLS6WPzLLJ/ctgJJ7aKH8aBR4YTEsaofW2yslXXMF3qfiR4juDJXWaRUHzhXzIm8de372cXFe9rrPvzAserug0DR9rw8ed79YkZE2hcYOuWGso7Fc8dyjKOgIHfHwreC8CD/sDWpfU56rbGXw4Xeg+hR0yqVBRLN+5xMa/2nO+t3ZdVvr8/e1pzZQya5ipqW8QI87sIElvc6KdEgu+EhP1+OWfhpIZnNY0LwlGiADdaj5eUWq2sxwXh5WJkEONT6gJATCMZRlL/zp11VH/84/EZJVfXBPDxPCImW8sq9UmOZ6tZF+PIb2kxJdt6lEf54QBCj4CxWd3U0xTo7rl+D9+6A511ly81SajUsCONEHqvZXlycWZRTpc3e+nF+fptdqqj88go8KQgEcYuvN7lcerVML2UuAn5rHJlVBTWX4iG+Ex7MONy/1tlvvfx878W+EfHwJLUkV6luPjD3LU5k73bqtxZW5WytKtySVbxla3Pt/mlReJQfV+s+MTU01JTJFONvDOD3fMY9RVGReemzeIIQXu1vGhrqWJtx78XesvMImavXaLVqrJMjOYGE/fXF9dnbtuxkC7t25YNl3wVheFIUy0qleode7VC0cEHYX6zNq8jJ0pZMxgOEUzZu6AWarKlzw8A72XjEFEpztJodrZxIXPWWwsJC6t5trt5WV4Li4M3JYjzorXtnmj6UqeRlKr3VdfmTd/Bn8SiLCrbobsS9/BGw5tYjHUc7LB0suTgkkP/58sgRJNwkszc4aOd8X45PvLe+ODOrykxOT0metHr/naNFeIxvALRIKxsGq9rVeZD8joi/IBqf/VlBsfwi3G31cjXOptYOLooKCfX24owgHzB3a83aHVeGcVz+oyfXKXLJkSnsKkX17tdeEuAp/vHjNi5d22TLNZdItZ84Nm+MC+AvBT9a1zBYr1uCG/mIeKMX55G+LzqfWkcIPnibIEZS/P1ypbIt28yDQRzX6MRPa2oqK6v3VjJ5/GV4jiBl3uSv13b06tWVIJ9IwlSOI5AP0TbnEYzbBMPrvV29qFiZxoUA3gVVI2rqlfuq6wsy9xgRclwCXthcevP9B++/+8k4sQhPEbCQWjp0RlVjk63WNQ8RJ7DDoWlX4DYhrHvd6ervtWK62tuyfWZc1GKuKiJXesUEjicIITBazPMenNMxiuen7cMiy1M7VWBI3bRiHCcSWX7ALDPhJgEXLet1auQmq8uZ+NJV3iLLmTEFiaRAqZVzH2eSQAy1pRUGRaXUoLt8DlPCgk+2F+SA3ShbGnUOf8vZAELxC7HOrn76VTcsxOvMmdZDlpKy2gse5gxKwgqqA2UamRq4MJiTmXBlq92oqMUNpvBmb7ml0dTxCNO90fmMyivKL8jao7tSzBkSSbJNpkF/2H4YyNgo5hRclZhnL7Me5RWGy4ezCSSApOeGYoeGrNZZyaPxgXC8zpQpM8w5nw1yoJQzIv6mRMPXijKNubva6GTGJfeIRdGcgmAqHEq5agV/ix8ZfTZbb6zl8jGMFgLexrAzKRyNVluVg2WMiBEnYKlJZe2U52aZ7XpuX0g8p6zRrKmQJ4YwXOGEpKzq64r95BBPJSECb43ljButqsknVyK/JpIRFRojSllnkqtUBrOmwUHngmREBHKqnncpzWWMj2d4YkKFkavB2nQYQyIA4d6fts+4gHRZljLLTGkyIyqMMVa1YbCMbqVe3rBshZjTEjcRTUNXKsNz9gSgC7WrifRrJ/hwtrfY94+whMJCZZu0ddL8cxgpvmGPZ4DRwKAxt10/6wKiICaI0xA2SZNVzfUpDEfEvQw1YdU1uhYzXehdlPaPkUBVtlJSd6gc/BkJfvGRyct6+5oa5AapVHX4Eab7cdqCFzowmgwMR+TqI6pDrkZM3DjWe915hAXBcUdKxwjH7MrM2S7VVC5hJIhYN9PV69zdqjYaTbrUjBvFDIdoTEMBlbsJ5TT5smI5hw6ZSm0rmR7s702dR0oM+PBHogiBL75TpwYgZNQrb0VB29bivsGS8c/gab4kLBxqsqmRV1ZgYeUcmDq8zqzgyyhCZuQ0RSSs2BBr2MGhxkfmIvCmziMgECAIf18/oYhgAqakpDyTQkKAeCzMWb1q8SVpaZMmrWbp6jVr2AhV26jKzP0wkcgp8wNEHvuEpqYkUaFogU6D0dAbuyCZACCU4ZF8qkCVxGkIimAZTa4hi82Z/uQ7eI2EQIJFopAwYMm6xYlp61bxRX9T0/JXgQ2WWJvLZlSY7d16m8lkQjXjgV27kFD83rvvymIvT2UOYX4i3G8qSfusTtvAF3ZFpcL1VDpEQAzDlTAjM7eEpfGcsvkb05voRa67PumhsUJvicWDYvwBCER4xwTx44vTVj1ixWG0oT7idDl1JioVVJjUMqfLJkMplXTbd9q71PbOzws+2En+1nzy+WBPmVomGxpKTScEAPxjcA9RygOrraYmk1EFYLn1BeL5e8Jm1dcZnaliTlHEAytjh5o6Gmsdm+6L8N5iGQGjAF943alXYVAZ1Qa7WZ+joRMzOBxK7J8NQFtbn52qzOy2zKLPDiPZ+sG72+q35+9sz2/PyWlHKW/VmR4gPkAQ8vYrbtmiIwxjKU0VyMqq8yQ9e2R3LSbA9xz+HsH6uhK5PDWOUyJkQ5/VGdtoKp/GfLw8SjBBBK9MPQumrLm9wSGpQuuQmBsGBro7B7UOrR2JEoe9W4lW4ug0O/JodqDJK3E01OHYRTHNUnq2bWunoFBSL8FKeWzq7RlsfH6qMCwsjsjhj3rzCeGCWSbUO/KUkoYSh16/YAlh7thucGlLiUHFqRn3xnNdzk7DJ7XzXpruzZzdb9QoIOpiSIggKCB52erVY0ifWWoyydV6vUqlRu9QqfQOjZrcrkGbXIWsRqrXy/JkDv3EmeduPnfVqmtm3M9EJk/U1dTR01z4Xvu7OZKcD5tLbHkoUJfG9h+hdN4jGbevfO72xEUgCD7Nom0g+EXywFMuZGj0h97fqzexmLHBblk+IBpTah5osJ7KKwXwer+z1yBjOYi8y1jczm+CePSUB9kwo9yqSb8lbYEFMJZiMBhcNpVFhdpi2ldqsrWWVqhjr7/imlmXz0taBMB9wNgJY58XkxAXN1ocd3EcCU+zc0t+Pru25eWgkMnUMhSNH+mG6F1bbmmspauxFKwZaRecXtb78IRI1n/0vkGlVjcYVPId1WyGALddJEmzNgwMlnNy4lXfftXvVB2JnY3Ae43FLYIgHEZBCFO4JenczXe93mAfaEdZ0KORI1OpOlF1D0jzcqUHb553yexpY86/DC66CUgRwziEnMNfxcZooh9mX11xVha0z5p0KVfMODdt/bKWlpaKPizIKkxO6iR9rY7W3pkpEWFAKBAUc+K3SjQshQG52WyXthnKbE8tuHoRAbjPok80Us3+RZxYcNTGWy39tkMu3eynp+Mt97lhIGYoQCBBAjFz0lipd6FSNdBTlFMlKapqyDUfRpJTopQoynl0djJxCBBMfdsX/99VXfwhCPAPBfg1UIZCxJXSTzPRbplIgB9MCAuL9+OBy9Ju4C6ZAnWZUjagYUBauVu9YN46osLmxwsEnIB/KJEsVu0zKeS5Dd0l2WrDjDS4Q4hbHSBPal0h5PiEYngk1gqHLOlc5Uug96HoFj4EXAVJyz8qJ0+WZyxD+4XdXtDGZ/bO7rxq/fLJ546ffefLTyTEXSg8/c1nEUu7Gyho+6yd3xLEiyNvTF6SuH7SDaTP0lkOubC17H3/+tTnbr0V4OzQ4+VRzDtKucmkMsqkyFXGu2A+hHIOQbjNg61mylgk4riE3Eq/pcPibMxgPpx9Dl7DFMovBGEpsGoVy+U2g0qqbei2ayX2TqVZWiJFO/GKTXNv4mJxFL4QFD6sc34+hfCx/Q//ZRRAMM9GERLGQyyclD5jn25f+VodTggBftdeM+o8gCjSl3eYrHKFTlYp261wzlpNpAgP+ERSLK+92o/jCI64d+VQbFOpK3bptdPxGrazf/4L9IEA8RNz59zaT6/cZqTBOKDPtTfQbXfojfIfnoT3PA0IXjl2dgPDhzkUe3JBMe/V2+fF89fOAxBMvyPysknXdJTu09WWP8ezEH4ex/gDvoKxt2S4yMxt60NhVBxlPaQIwAeCcLfGEoemdp6AvxIaQtIjR6zWIzrG4C33DV80QAwAiLj6RaPKVVabpzJqjCqbbNAgUb7/fiOzb3sJCPHFDUYhoH6wrXBLjS6Bv+YPgQAEB0RdlJSYXqo7al1weQZ3iIJ/OarjYN5ayz4dhVslA/qK1DmMjUeEh3ZEjZuh7dTsuOTC40SU55p6GxvLmQXeGRDDFQP+x8JzdPAUbBaLXP3jzC01KlmFrLLSeAOb5jI/QPjr0XWHg5J84CCnIMRXJLh3c8tHOgsfMemCexEQPJUpydeUtuhKm5r295DTPSAbj2cXlV18fU2WVDc+zOfP3xpIdB7u7bLRkegdbzwcocB5HBPmF+wHa6450ni03DagVyGvrLBcMfuxm256/iwEuFt4QllVljbLzMIQTi7IJ/zhSDZdobOUHvzItHv/+seZVl5aXh7rOqLTyNXSPZUTOdb64DGRE+sGG6xE8nuBCEjrMNF3aEfjgnuBGLxOU8wvB/JhgR8sI/2GIVeH0/QFOqehRrZ8wbTH4Fl+Fh0dTSBudTv1WzNpmTmaUxLtg29A5Jx5FZikuw0tX365V6OvNDq6a/IOMjN5BaMDiPFwaLxeoSwzrOQPfKIeT+0wNNkOqVcmEeJNnb9n787Dmq7jAI6/B+M+BATE0MQDSUjSSkMtTTvVSkutLO2+7L7v+356erqedo/dkw0GO4ANBGWQgAIpl6AZKB3SoWTZ8fRf9XSX4EAatO319x6e38b2+32/n+/nGKy4cZEQByAImcRNN11KsbW4vKm0Ql6gQSOvPePGNcxJiIL/bvEz6Upl0fsmTZVlDZ4LZSbn10s35W3eIn1vk21nfolCypVLCeENhkSA58IWiZQHy47wFxMhcf31Oz79kC9335PBSUDgyG/wN0TigdgJTF9czhe7v+wq0DttUqVBr9ex4BGCACL5DwnXoi5p7TDLUxmU8zhhZ25uiTgX8t4rEokrH2XygwxR3KC+j2erTSqN+18ng7XsLlMsXzYpsFActDhSiATiiOWiFWXltRpq2fYl2gKFTD534TpIwAuiqap07K7Ul+VMwjOhCIDbVuxW5ue/n5/3wQcflLxfJLnnacKjGIrIuFDGEs5JQgEeucOhMGiMxPA7YdKqZ0t721pczVl3B4beD5nw1Ohzb+qy1dsrHaZWjUa/a/ktKxcsnQVBgFeOUWfeSa6Yw/XteCqE85+QKz6mrjBfws49e15b5ZZ3XPVoxpnEhg31rrhi3soZeEyJhYv5zctw7fYPNdovi7MeOy86EMYZsuefv+zawxIKDV0H+6hyczGcmP1MFN4TPX3TVuXhQj657VwGFAqkAGSxr75LtGuXoW+novGWhatjE+9etqSg2lBgPeOmV4QMUhzPcG1Nz4E2I3fhkdi5LWpLMwkAEPzA1du0BXwqu/rsCQQMykSYCAIS4MoTyrd9W09dgV5ZUFBbmrWU56LwPufG1oY8OjLfOeacPJYyr7j9IFK7Xm6xaHaWXpFOLAAhTy1yV8jZMYR88OCzS40te9EWHDDOwCOZdoO8eckYQCA86bambZRvsxrTp1xCgOci+F0iM9CWy53yArmq7cCO4iPT1pHIiEhYKaY1n49lsxiIcMJ951vL9u3+AcVek7qDAi089UcKzkTCWdltberk81VBwMTBTD7qre455LA5evbf7NETdvZVtVrkaWNCBYxZtZjy0u79+6544EQChpD3cMmYjGvlXXWgNevZKztw+fyMO04kElKIx8sEpCzVFUr6cFT0e8VxQoCry7RmrZZGJzp9QfnirFkTEuOT/xo9CV/96KK0zP2dZ3Ld4ApYqDl0yCbequ4+QhDHFnv9IfZqlhPMK1ds/9Tqbu8+jTmB3fNgBxMD8cC96EWOur7D1Msli85+cXZiiBDiGCF3qxuo/ExSd85JR+07IWDS7Wsvo6a3Wm6hrtGyU6HYs+QUwpn670BMMLHAohcvwXPC26vbeg6JJUVqd7dHXXKDZlTnYZdexmOX0V62wwWJcYE606GIjuVq989Z8vWHDfqbFz5CYnBcCkAyExkRKaTlisStko0Vf49UC3776Uw4JafJWnVga4lI5JA65LK0C2bwXFTkVEI5uuRTB1vBUtPWZqe17oQvPAozRk3fmy+y6YxnUFP8RYsri8BCcZCSiYCQO2Cx1erWbtPLRUseeSkxbBxAXCgj6Sx1g+pwn4SFxPA7AQIglhvTXGVlFfqDH4Nc7rTsnpueeC7DLCGjvdmpqKvlJs/+9HpTnspWXbO9mAPWk085N3DwPATBpF5z8xdf7CjtLG3JSV9NNuNIjmCEU+Cn8tjH+eJWkU3bDQCR45IBomH9SgVyuV5mwSlHKluRNh2PCBichDOPtHe7z18bjmfEebmS6v0tVXvc6Y8FRusOybK5278os1K6bcmCs2aPoqFzs5erG/KLNm52QyS/eo4F02TkmlTqz9QqmdSCTrFk1ttJIfw3Tn0KQEgKHoh82pbbkFuia6tgAwGDFMol0c+wSLF7m8btyoHxo2qGQ2hU+q5CEyLTJxcLBUwMmX0HF8y9mWKdpEh0uEiil6KT38Ls8aNlzHwUeRsLya1qTntgtFzS/0UkMH7WDE64uQCYm84zQNxoSq+LH/uEJHcjIt10gmDh90dcLqPZKt+69bCpMjdfo10+/xESR83hWghXNXzUINF9s39DoKHnYIubYxh7abGruLv8FjLW3B0OQMSoalie8PD7DbZClMy44Ylayo2yMr1FtGWLFIO2gHmPkxTNqDHpBkw/Lyhyd33zSOCuOAiREUDU2Oevde8oNcqyyPb2IlHgwTWSTNTaXbl5H3z1/qaS99ik0W/eiU6nlijN89MfgaRRlfoy+bIWlXjTxqK8nfvOCtwWB2n8Td+7jmjM8nlnz45GgNdFcizxvHJmB1u3bOGrIrGBuj4KRRS1tqa9GBsSQsroSku9tLxcZHp/Y0PJrv2Pj6oLG81CgXghzOvs7OxevoAkRkQKKQwgJlk4E85R/vjBe0XvN5RAXj5dWuTSy1MhiGESBzDz6TEcpxO5tFhrdfL+pk0b7bI1BHhmHMLs07mos/j70uWpZON1AgCChET0mwj5ICex9nJFx1cq8ko6OnJLfnx/45a9VZuXQFIQw2Umq+Z1Wps+rF0xLeNEjkPSDX12s9kqU5z8XgkKUcaoWjyMWqEEx5K6snYbzUYyTmcERMIk1t42fRWJZBPzr4m1wkkvZVzE+fPsbEEiEet2Ojqqit4rMd254PG7k05lOMRDXBi3Z5Z9Wm4GTWZ6BschiqzGVomliszVE+7ZYhDVryTg2J6JHc/zB63bjK6c01Y/x0gQAKyg3L35yawbCAeYCBDBy5AwhjXpHGkqP7Jvt1KqMpC3RVKCumTTBx+kETRsSxRCTkpammN0Gynbb11x2pRohkwQGbKeLrq6tssgmPl1B+tVFgKOJZv0K1Z8Vy6rcDUvIBsEjIQIAG1xAS17MJ42ASKCQ8JnMpkzWbpyscbYbaS5ydijNztsShsbNzV8tUm6SaJeFMLxi2EiKUGxd5x2/hNltS3W0hb3orMeAyYKGKrYm76zqHI7LE9mEAWI1Lt2yV4kYEBTWf/kjk8/K9fKNPMJZwRNvnSvo0dR7fiYA+0158z/uQFJWi0rrMXIFHt75FRUNB3Y076v6QAa3eXnfFCyqYFNueKs8FCGQTQsuhzqtZZ6mavl4TuyAUKP40Pl6+3yz7UsWZ0gBKahe4+K2wnolwAIerRM21JBvSzr4kkvI2CEjCOeWqkOm+gQW6vIRS/TyfLVDumuj6Xk7hLZpVL7AUNbS+++/UtmbHguhJMri/JFJuqP/5LDYieN4WoXpc5GUaG6YvEpDyQFh04FAUMV/PSrYHGWtiyGGAB6KnVUzCJgAM9wQek2ba/ceMW68YyoeOGFBSKbDaWqkvfzinQOHbmbGpTiInFDfsMWMSrVe3t7s1i3gfFzQuNhVb5po81ATQbHJSosdu3VObi624steq2DtLVrgoQcl5Qwrv18u1zr7H6YOfyq+WNRfVl6MAH9CeKCMow1mRfxEmECRlb0RdhMlep8SaVYIhYX5X6U3ycpyqeBg4jUCuRXTbvxxXOFb0YmA8BjIiX5hY62NIZKAELuu+lel9xoVMgVCkX7yYtACAiO81nzwnZNrWWXntlR/K7uYFfBtEBQp1/jV53crFXumc7k0XA6NedKl65KbNtZ9F5RrrgovzK/sA8cuhIROlkVt64jPCyYv7hcujV/C22lpw952/4gZ0JZQXlZAQqFVsqtTBqWZc9bP+zWyqvm3vW36fqOxi/nJRJwVEE8pEAm/47zRsek9uhZHJDV7CQX3isSF+3UGbrQySoUzFtw/4tJCcH/qE5MuLWjEhE13UON4Lwc/ug1Ghl6vV4md9TUXM6aOQyHsfd++4W2w8jap/nDlGaHfbcscywBR5XqkuvtiltWJ46OdLDQieEsvXPz/n2bP9nJBx0lm3UdLbjOYRkIswEiQ/mbZc07xSLVdtIRDOWmGPvUSq0KUX39ob0tbTy8Yfap8ZDC8QrmBTBjMZ42hj+NrbHb+wg4igjGXHhNp7HKqbl81qhaw8xmAQ/f+vCtty64dcGsl5adxfijJvAIIohkysmKSlWhiIcT8JzgtwPGbLDusEvENmXX3p49969JDI5geFz9pbxMZlk86zz+YszcApWhvnQKAf8UtHqeu7gcWDZhVGVsA9Gx5wZFZwcFAQgBiDjqZiIlktSOPEyF1UxhcCKCGZuauU2hNxSqHJtb2h5ek0A8gjhCOW4zwWnRmpc/wN/E5mBTMzfwjP6XsbisO2r1hvTHgkfHUvEPE//WzysO6L+BsYD6htxKJT2rBzMDCRLJWC5X6HLr1VvUOx29l78IxEEcx084+cptzs18umJWEH+XZqFSeoSAv0lm5kNHXKWasvl3ZDN6hQJTGVAQSPLFJXvwRAQx4wCSmN5plEkhT9Jnt8vltxIMMJXhMPPSgs8au+TTHuAfoq9w2kXcHAh2/90l5LjdNGVtmBM8WipChig4o6RQwkcfLCRe4EE+IkScOntDWqnLWNHl+LgVU4cs7UbmMGyEcKjm8MHaqwniH6IzUKtl1tTAPOi/ymZ3QSM56xgNIcXjtCZX3CCu1N3CgCKZmvLb6zOuUir0Cpu93rETqdSyYGwIw+iVaw02ZUHTirOyQ/mXFjGmsvlB//Of/3Aac8oVervaMsNHOv9VAYUO2WpCjxnDeYMz3aISxHliSYPaoLNoVsx4IJF4iGOYTL7QZGJ3251nP8NRtNhakeWcRAAAiZwyj+L9FZnLfKR3waRpmPpMDsXSkBj6EQ9vXkLIHauucBlbHGJxg7hVsrVKJW+ePiWaYTXlfLsJUc35/bRz7FWCkwAAsmMvPAOrW7NjGqMtjjNEE6PX7RVvLNRrs8Lp1+SMtWtTn9xMS/snup1isdr0UXUjve5FcxCkwDiGy3XXaw4ePlTQdl8wR3O69ZBIRJkvrIyO33kZuPcbXU0w3kda/8UAIlUJhj0u+nd6Z5Orpb0dLVKFSq+W7lLIte4FjzDcnt7OLnPtpyv7u9Z7etVKmZFApk4y566y7rday2G8MB5fMTV2YQGig7TfSH8iMPYcQCLK7ahWdEiR6szltQtJCI6IYHhdapU7S61p9CM5vfojkVmeTkD2baUaq7l4CVNJwZfolSKDXnNFIv0QUtrWJvoIsZi8ioq2CvOO5Y8z/J9ByPNUK3WlzxPN0QVdtldcqNbMD7SOCL4dKzqZzxWiRa+rMKgkKsWd/b8ivblalGsS5yPq0DXv+37RBiCCZIbVxNu/o9FpSaNfCakGk6RDvpCAJ93bd8jm43vK1BTaKr6k33vdzOex2UyqotxdFVLjNIKEEMrwK5BpZe7VwQL6VWOq1Bec5iPbxiETzuRTXJn4nvjxmWqT0mRvuV0Yj4CjukErpVWMqKKW05IAiGOYnXiPWmrRGy8IZwDVKptDgZ87cdmlxZTmAKMsEeL4xZElkogNqvJ+ptYTCZOn04alpd1NeiIAKQy3u/u2oC13DTwpZq8dkeLOJL8+BYy9cNt213c+ulCJnqHJF7dW9i4Jp1/hsB+mpa4Jgf9ibLkgBKVki77zgnABA5hrsDXojvhz1piQ1M7tblKT8EECwGwqlBgOnDEJEAzQd/zibJgIMJFhN/YE5XvoIJoBTMqsU6mrik/HX6XAwiZXqWs6PirupDRJoVhkNz4QxUDC+O+WKMGrJKp8g3wVA0nmyTpTJTL8Uygp0Szu3Ocunu8jqRBHJVG19tF8PyNm7ApTkUFUBgIGEIJaLHXuuXj0dOD3ohgmhkGTy7142QQfPnlapxJLKkUtaeMBASNh7QGtKV8xP5EBhWVsFVeqZEzFL50KijLXXN8+A33MXGmqFO3WEwECRsDMJyx6SjsfjWJAyZgkv6S3+WFyRAQkrq+XyvUnrx5VhX7DbrZVUdmqtPM4I2StAW35jvTYZI7B1IehepVv/zf6cVLqzWUWmpb6eKQ/cYkUcYNKuig8hpEwAbVKvmcFxzTFVSdRMM/3grzHEAkhS90nlDWn+Xq1T0TIrc6uPkOfYlp4BCNhtVQklX96bRLHlNYH8uVj8EPdnUbjBYTh48Ie0dSbkChzzmUkRKxSqKq2f3FDNscSfYGyr9V5s98FGAUPri+14p4Po2b603/mAbmqr9UgNY7QW71Sq0T7Oe9yDDFhGTaJUuG6GD/z4GrK3O7l+IPzcqRUHmb7Y0AyXncVjdLdV53Hsd1nE7XqOBt/cw3uMm736WDO7xLmy+sMBx2sO5WRIHc2lnVeiAdWH7KJ5a51PlLh4anY+U20t82IjfGHQUsJCyx2k03admt4HF4XnrVXZWk3cmwxTBFvKVR1+0rhm4eCbuvsxnUa/uGSR1RqkY2exXMYAQapzlyBJ+IRfVSpki3ypyqDCO7a3vRJd+pM/INgTaeDQ/S4SMb7inUOnewdPDFGIzY55POzR9e8wv+UcD1WrBdNxm9kYrMhanlKmIKXvTnDqTdIjXjk3OWFJr1syWT/yaYNu+8EudHYif945p76QyZxTc2sKLztuukyqV7WgkfCkNiUZTn4jeD1lMrKujOy/ScfJHuRCPGW3poROOpNuKigXmW4OgGPrK2stMtXjMdvXNMps+4gFv8RtKAHpamtYiHeN1cjktpTg/FMoRirCz8RMfnaHTtwz8OfRG3o6VKLt9oXJ+F1GrnaUvYInlkv7qurPeJjzRL6ExE7w1pDk3u9P8VTY3jMSV9fPpmTiJ+KNwlfP4xFq1gnxAMCASplfkVBup9kMF5ssdTUcOEc/Mp1WY68rq5W5RQB3pW4Uisza8vWBeOJmPEHRCqFJhW/MDbH1XKoebG/1T0GZ4gaKlUmFd42GbO5HjbgoYJCpcFyhV8cvMTS3dnc1rvML46h/2pDbmWhmK3pIXjXzMYCNE4m4JkxmYfUdnmOXzy17mpStDS3ZflR0OBX49jVIFEWKuedi5fptU5twQwi8Uh2Vp1KofWLjfTTmU0WajJ9P2PxX2ZLEVXmq8x342Vmp0YlzyIGzyxVKpXyMnxf0hW09PQW4ycxg786V1eXX9in0m8Iw6uedsi0zoqHz4vBI3HLsNfJi1f7/oH02qbS3poa/CUl4q/mgETVUKdfRzzedIdTLldoScJDt9tESo0s1ec3L0EXtTQVN7WlR+NvIginalcrhlqIw6ucFrmuOmd8KB6qERnMioW+P0W6k+aePef7creSfgWdJnWAmgUheJdC5pTJLjoJD005tOWgypzj86WAj7rkjuIeIvxw60LU2XV1DaJ66YLsZLxpzM0fHvxScemJeCYUth6Uai2+vl7MvqfX7miZdyL+Zxzx1FNXd1g/jRS8adJifvhQj8eiV6oblfX4eing6XOxKw74/rL46GZndlXu/lp78nnxeFPCSvNhc8VmPCVMlRhUDuuyYJ9uHRF0Wa80r5pl+GMfqzhAvbFVKTsZ7wo/v9Hs1G9fL8RDLxWipoKwOHzY2DNQ5uplvn73P7pkQhaIdkkMVYzHqxLTdiqdlBKFZ8ahNqFr99F+1X9oalaqHSvG+/iquD8h850UgnVCKN4UfZnOrK5WLArHcwfrduf4dFAnewa9Frn0amLwT+lGpclkN0IE3vSoHZPEcMZsPCMIzyosRHGV707uFRAJxdi/tM7AD7+MkQCnNFugrhhv0xQWKgtZLwzFI9GL9ipF6mKfDuqMOadd5qSUSJ9+l/0ZB2fVImlt5TEm4lUuDCZRTUYYHhGQgbJRW/YAPuy6lW16mQ4/pjGbVBLN2VF412WmQqWShSfimXh6bQZ1z9m+XGYQCzq9+Tv812aLuOGjT9OD8bIuicHGGXhsn0Sp6LkfHzbm8haZhhOe9sPgIhADuJ0SZWPtdLwrMvEqRAp9KR6KOX1PXavIOQ1fFQN0ljc2mm/xt0KX34TCHS3mSnGX7DK8bNK15IrMrjOD8cyYvSoM5swkX95i7jigcHI+/quTPpFk+5lheNmjakedpnTeSSDAA+NrJfld9u/xZeU7tHLzbfgnQTxnuTAhqX0Ub5s8T2pu1Lrx0KQcdSv1RnzaATl23x4qNBDhKaUyg7JBgddFLXVaDhdwZhACPHGagTol6/BhpS36XhG+HCoYiCAo3ar/SNLKHePwtrE/sXfnQVGXcRzH38sNCiIiJommadnpXdmdZ3ZYdpqaZoedGnZflkeHTncze6/sARrLcm+sbCAIsbIrxCGiOCwlGsey4rS1BgP/VNOhlVelsvvbff3DDH8x8/ux+zzf7+f5PpcqtYb0BvoTzqnopIiaSe8iWKP2INfrffdzEbIsheKdzj6IKQVea65HbmYUCZwadTLEIFx5RhM8iu+MmTxKNASO+UavUqXYPqUPLCvQ58hsS6M4RWIZVUI+ZnCF2aBRLsBXvTDOWPxVUlfDKAjnLOv3gOJ7khqNN8ZwchFR06UqTFvuFu4RuSiqyg1yK2H4qHH5mkN0uekLgy8u3K5WcZh+kZzcGIlEumnbzQJ+Uq/QZtJZ8EnRwDu79LkSRwvhnH2hF8rEquxSXhzEqSiTpso2LRmMcP1IY5mxYzm+ZwjAy/mmcrXCTJ+YzC4Tko0pF3EqSlN3muR5CNewK2pb08jD5+Y6QQhEAuLvdbLXRyGiT2TpMz6Xbud8wjmJCZ1JqnQF9yBU0QEX0JbduIlXfG+aTiQQOseka1C1LhwBCZx9oSBXbWTn0pGc1GAypMnKbwQ8ETT6uvy2ttJvWIJvusiZQw6EwUDOOhHBs/NNB8SSxuvvCSaSExp+HmKU+aOFu5GGO1vLUyz5VbwwxPfmRjD8Bl29usFCP/pGOFP1qNWmqsobOYmA2Skq9IqbBHwVWxBZloP2/KxEH7rv6ih3pSeVbzfODqOvTLgNRSOlzXnjAzihfuNbk3OSlPFCnk67ZmonKWXNLT52DycACTOv16Uoc82zo+grESOnoU8V59Q+BkM4kVEcUNXLDELuvPBUa634ULtjtS8mJNa8IVclqXaNCwiBSPrITUZJCrqa8wARxxeLujBTrX8PARs2vVLcgLNqPb4lHKIHkFxe/t0eouk7IvK3Z3cmZXHzYE4klBIpUt2TCNntxraU702b4j8QcH/peK43qcWlF9OnAi/QHhKLa/fl3TWYE+okVawW8iCTcKJuyKmoaMjr+ATfM1WerKhbOpy4EPpOzOxcsY5NVM4eQSTHE0lpKrDlBYRszSWqctOWw12MwIdEEs4qRbqpgDn9IZI+FDMpOR19aW3N/GEc3wDEGRXUImwTnjUa2WS1rg0D35ogIcey1fYqfW3snE3mnOa6umZiOa6oN7IzUrMRvIUGs7Gu6hMfK+w89KxSIdM41iAaQh+7sa6urLOss+aJKI4n5i61WCrdhcB9zOsGTUV6y03Lg/ERImDYxZRX2K8E+nxaedQkKJN2ltbeMOC4f8u4TlL319yI0D19JRUNRtsb+MrLGAmgP4Cc28KIHEgfix48rjQjOzu1be9VBEdzbGX7VWUl1yBskYQSbzG07mGdD2W8A86VSBAbLwjGA2YPJ8TSmJKRRNpG3WsTOZYIStIy6uX3IXjBNGuaW6laRig+YtjFqWmpMN5TbnC/igwkYnFmNQEcy1C9TJdbLOzhEb+bXYqtw8ECBnjKwzmz5i5KOpTZ1OBBJ89GGzJ2sqNCXHMdx3BOzHTlfiXbhN15+c0ENLV57S6bOZFAXyjszFisSuWga+kMPEQQd5Y0ZqdKDzTveyqAf5p4fTIqzZaX8AEDlrS25plt8S3rfCInMUqrKtyfY73dkyqqUw3lSUWU7Nt2zKndV9enKvX50+YifP2Z2mbMs/dQmSj0ReMQEKFUZxSqz/OsgX/LKpLKdY054hpW/CPqHfDIl9JUWcGlUfiESVa7o6vb5Voi8Kp3NATfgLJIbbrbo/q7gczaVVMtQyWuZ1Ug0Ryt35itZWxWMhFfMGTEknZHT3c39veFXmiMmGzQKguKK/Eww8hP1kk2qnUl3B5AHEeJozhjB9KtQ33jNEjwcpfL1eF2291uRgp40SgiaFyWQosHmjLmYpkuUyKW6fZeF8XRIgbpJBxM1d3rQQvcM2kKC6kyO+29GzYkIuQzZ5ehN5G1xwPDIAFM2y3OSWJr7tZrJvAXU2XSQ+Kiq4W9fjrioUFr9xjbu+zdGzYIOtC4MinJpP/pWU+81ixuwtX56TJVcn0J9624nCMCzy2WZEozBD6e9mhBy3HZ47vdLfQKtCEYDoOnHyjBvIkgD2j//VPUHNJTqqkr3sojQzniwZK0MtK2vo3PCHhiXXtWg7Oqq8eVSKjnfYmdBqHU75eqa8+DcDxPCDHjjcXklhXJSraOXoGI3w0rSc6Qgi90Xn4XGTuYxU47Vndv9yeEgfAGnITNy0lLU+/z3LuKA2+/QlNMUVq2bN8P/Cn21lwp2fIxAt5V/lPAtTgNeteGXro/HBQI4cIqI/QfT6ZEImGGx16yJIJncyXZhRKS+fbBoUH85pJSynQ1PtEFPBIzDebm7ZV7HK5et2O9AOd5XyzLkCYpxn/kyXf3jFj0DEXS/VJJ/b77+d2itiJVasGlw/Ap5we/ckel3Wazuru6Hn5TWGvG/iuzc8WGmqvxaCEBMx8plaUlfS45sPWKVQDwNPWovqzBp8QxkLu3mDUVFT29PV2fcFmoJwROT4dImDxdXfJtzaVAn+e5T2zs46W6ryVp1Bdsea0/wGSU0gx2vyaQZ3GKQuCt62blW1u6u7u7HA4h5b0D5xxKU+2tWeUNMc2XZLuR1JP8HauGAFEX69L2p20VeFrg2G62V2F3uLp7XXyINzy7UxCIQZyWorneE8vc/zDzOeVu3YHC/Xu//XYVMHZZmUS6uXqakKeNHYsIhgSvnHXYatW093Z39XyIIGZcRfJGLmJl8dtesiN7GZ2sMKWktLbmyQhirq7OFktlNffie0LeHYTR2uHo7v6lQb3hQ8Lo85PE/885A4OfSD9YhnGMt+SQYp5/hkPi/SWdTXtX8Nb4zM8zk9ILfPFdBFi5sAOnq8vV29uzjrFB3rylFsHEazN0ya0WL5rXEsfjXzdJN1YfaLuPAFKyv6AeoayX/q0gWO3ASXdvd5d9Pd69n+7/VJNOqjBmedXDfOg5tZii4k4WXcal0jSKdJMux0cFszTe2dXb7ehyON7/gH7e/Dqep5NK6/LPBbzmFkQRw+7LTaremL1ZegsV+yWFhbuFsXT/10QAMSyxu3F2dW2gI5GRQXhyw+J4BkIAhu8rGrRX4VU9zTieNO0u/qp645eZKWlpaUiqfaza/TeXPbp4j8PucPX0dLkTGY5X6nfPFo00w34rb3lZ+mj4NZRIMzKkmZslUnVG2pe6p/Ft86xV2yrtbrerYzVeWfo+n2U2tBWmB/EyImZM21silWbweVomEgnFT/rCwdTjimPwWvLII8uG2/4JXnY4SwRwk9WobVW+PNcTQ4snc6u8nmxxoViilqRJ5I9P9MZV0uk0+cJ17Vpju9vlwPE+jMWLiBj0oqFtU1vtJXij8BX7ZHwtlbIxVyItNI32iq7RGRXEnKnlFU6NydbebnevJ8qLSt8TFloKKhrylz3tJQ2Xv1tUUKJEkpapkxbuKPlmMn6wdHV5ub6i3WnvcjsS8Yb7skQAzEsuVFU0F6ya66059cd1jUglfLFj44767273qWz38QyfzDKnQWXUdPfYLa5Er9jFhDCMQlBt3+UdkYjjaKtrVMsKM/dvlHGuL0Z1jqHf87Q3aNB00U1P94d4vIGEXaCS7txZ+L1zBV7sGUpJypXu2Fi09RnfrHYfwwDmd4Dd3dPb0wO8GeCZB+qOWG7MkfzyLhqu8+JayMAgnqnTJRVKPs8u2vvtIiFPUvh3xkK8xuLu6e7pxfX+B549mCyUrILc1Ixy2WsxeC8RPFlTrS7MTMtk866t+P0pZuWL8Q6Xw073Bno++YAZHrk/TYC42Gs1+gaVSi6/0MvaLX8nir0GSeaOTEnmV6Vb7pvh4SckzqbAobx6SbyzwUzXBjawnrEeGH4RET744SaVkgalcfYUL49fiqC0bLNEsjmzqNi4TYDnM/+XmQ/e5nK1d/T8ErXt7loHYf08qGAi4hyAeUmbU7OT0Jw7E28XwZi9Rft/KeoUVTdvmz2FEK/KeJxp/Vg5n7wut7slvpsWeyJvhnnUv2swi0lCLJXzqDAOiZRIiyQpqdK2mk3b3vGW1NtZEREBRLHUUbnlcPuv85V7HKvv8qBWdcLwC7WWFBVpatNt3v+pCDCKRqlEnE3p3u9mTcDvKCEQDryziPc7sNm7uqClZd1aPGP6/AvMz6rsFBdmFqZfI4xXkcHntVFdlPvdpht89czLCYiAOAJnwB17qr7paHBaHdAxjxGh9KGBIILlVelabVMDaQWTZnr1BvqI/qu4b29p3bcPCmPFcbqJzgFgJtz9us1s0FR1YD9sfeNh1oRCeHgEfSAEolbRYtGaGkiu4zVv7vz91dyY2LenffeSv+1yPBH8YXRVfJU5Kzne0RJvB8Y+RN8IePquFnLT9Tp5Qfy8CULrUbz9vL8dfXIjOZf0Jqu+Oc/q6nA61z3KoADOrnAiAy9b/nq5OCUpV6lU3HHdcAYKLHka6BHLcc8V8eePex+5c3u73op5jxuHbfXayzjLRrLEQJFEurNcpp/2vNA+FP3+lRFMarPYzNh/neDYu/jhtQwIi+ZsOJ9QHli4h/SkjNRUDKwUyP7Z77+L5aJZm5IN2pSUCnt8R3vLgoefgomcce8OuHaxRpotIVlbZ9tywyj8fJooGmDuzFFzlm0/uP1Qit5m62i3drjnryWKMypg8hNXImenBLWmbstN44Wzffb778IBAhhzwyyN1lBDi6XK5aI9/sUnGDQ8iHAiON0GRkbBnnyDPlmlymA72+4HIAI/v9+qYVMYcwfkZ3W4wW3vsNtXJ65lUFgQp9tk1uX9aFTY0KpSFJr0ZddN8bdr/f7hndsWW+2ODre7yeywV2GxLZu3nMFRoadt/x4M851WhVGBXCvTp+8y3nfR0CB/vM/vaCIgGmJncO9ss9OKy97ebj1YodXanAvWsRbC/l9zBSCYp+c3NFiaDlpAT7leU3nTA8O8OcDtdyaJhsBcFk2at/59lyOrqcnQdLDBmmc7nLdu3rUMGBkWGBQ9EIDwkCNLyXAIBxFA+J+/Dec3IuKAicNh+fyKhoPlygPJjSTLUWyZOv/lNUGAd81v8jt7wgECw2LHDr350mZtipZGY63JGR+fh42FzwKTGTFieD84X3SMOCwkADAESEAEDISRcPOLBqvNIP6ephy0jUZN2533vho1YyIibz0D7Xc2iQJH3Tt7lq0qy2hs1ZqaU3IsKU7a2+1VC9bNS/wAQkmAfkFAdAIwhL8LCg0ePnbkZB5egtmarj1IOZ1NdbU1xrzXZ+Plo0r9zq64EEIHM+e565/ZZjRrWsU5NDgPNrRr5Fk2J47V6wFe4T2AyWtGTglm5MixjB1x2aBBb74Jb/LKzY8mLmm35mnT9XKTUp2rUzWb65qNr19wC1H4+f1LkRDAIF6dNPXSUsQVhupkLFqFocFiwdFSgQOXiyprSzyrIXHB4oWLufJwi73r1zv/HfFWjcZsUCRjUlKfnoRaUWm9Y+m4UQ8FkgAirxxT6ucBZk6A596wWS17jPnJWBTQUNGOA1CkW8wKrc1m0WvNVVW2w/I8jcaKxm7JQ28yUYxJj1arle/WLrj/XniXBAD839J+/5UIAgY8/8CF515wpTmLLXnmPEtLt8vutKLIJ1+hycqXZ+kV2xRZCq0mH6XcXm5ARr6lsjTPaGHbrPmTVhBzZIMT4d89+/0vgf14t/+Mt29cNOaC+VdaFflkoc9ik1GpSId0oxy5XqPXp29vV8owGSDf6Fi8YAlzGBVLDJH8IQE/v9MUfgyYywtvTYx8YeJEPnt7zPWj77xz2hXTp583evTo6dpmPRVFupxkca7jxXETZsyMfag/xDEQIr3nTgI/LxUUFTtj2JoZQ4dOiZ0y89Vr75q1eNYsHn5q+fNHui4JgBAv/vfzWCFA6ESYOXMigR57Gb6fz4gDOEcEAOeDyL889OsT/jCin5+fn5+fn5+fn5+fn9/PGwUjHgAAWjN28lc3kUIAAAAASUVORK5CYII=" }, "drawer": { "name": "Meridian Commodities Pte Ltd", - "address": "8 Marina Boulevard, #24-01, Singapore 018981" - }, - "drawee": { - "name": "Fairview Industries Inc.", - "address": "1201 Market Street, Suite 900, Wilmington, DE 19801, USA" - }, - "guarantor": { - "name": "Trade Guarantee Insurance Co.", - "address": "1 Raffles Place, #40-00, Singapore 048616" - }, - - "paymentLocation": "Singapore", - "placeOfIssue": "Singapore", - "authentication": "Authenticated by Wei Ling Tan, Director of Trade Finance, Meridian Commodities Pte Ltd", - "paymentTerm": "90 days after sight", - "documentEndorsement": "Endorsed to the order of Meridian Commodities Pte Ltd", - "paymentMethod": "TT", - "monetaryAmount": "128500.00", - "currencyQualifier": "invoice currency", - "currencyCode": "USD" + "address": "8 Marina Boulevard, #24-01, Singapore 018981", + "authorisedSignatoryName": "Wei Ling Tan", + "signature": "data:image/png;base64,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" + } }, "type": ["VerifiableCredential"], "credentialStatus": { @@ -115,6 +50,6 @@ }, "obligationRegistry": "0x3d98717d536Eb8A6062A50241447f6343e9336A5" }, - "issuer": "did:web:trustvc.github.io:did:1", - "validFrom": "2026-07-01T09:00:00Z" + "issuer": "did:web:didhost.vercel.app", + "validFrom": "2026-07-06T09:00:00Z" } diff --git a/packages/w3c-context/src/context/bill-of-exchange.json b/packages/w3c-context/src/context/bill-of-exchange.json index eac1e84..95b5ca2 100644 --- a/packages/w3c-context/src/context/bill-of-exchange.json +++ b/packages/w3c-context/src/context/bill-of-exchange.json @@ -3,205 +3,80 @@ "@version": 1.1, "@protected": true, - "documentIdentifier": { - "@id": "https://trustvc.io/context/terms#documentIdentifier" + "electronicDocumentIdentifier": { + "@id": "https://trustvc.io/context/terms#electronicDocumentIdentifier" }, - "bookingReferenceNumber": { - "@id": "https://trustvc.io/context/terms#bookingReferenceNumber" + "referenceNumber": { + "@id": "https://trustvc.io/context/terms#referenceNumber" }, - "purchaseOrderNumber": { - "@id": "https://trustvc.io/context/terms#purchaseOrderNumber" + "amountInFigures": { + "@id": "https://trustvc.io/context/terms#amountInFigures" }, - "houseWaybillDocumentIdentifier": { - "@id": "https://trustvc.io/context/terms#houseWaybillDocumentIdentifier" + "amountInWords": { + "@id": "https://trustvc.io/context/terms#amountInWords" }, - "documentaryCreditIdentifier": { - "@id": "https://trustvc.io/context/terms#documentaryCreditIdentifier" - }, - "transportContractDocumentNumber": { - "@id": "https://trustvc.io/context/terms#transportContractDocumentNumber" - }, - "uniqueConsignmentReference": { - "@id": "https://trustvc.io/context/terms#uniqueConsignmentReference" - }, - "contractNumber": { - "@id": "https://trustvc.io/context/terms#contractNumber" - }, - "invoiceNumber": { - "@id": "https://trustvc.io/context/terms#invoiceNumber" - }, - "freightForwarderReferenceNumber": { - "@id": "https://trustvc.io/context/terms#freightForwarderReferenceNumber" - }, - - "issueDate": { - "@id": "https://trustvc.io/context/terms#issueDate" - }, - "documentaryCreditEffectiveEndDate": { - "@id": "https://trustvc.io/context/terms#documentaryCreditEffectiveEndDate" - }, - "documentaryCreditIssueDate": { - "@id": "https://trustvc.io/context/terms#documentaryCreditIssueDate" - }, - "paymentDueDate": { - "@id": "https://trustvc.io/context/terms#paymentDueDate" - }, - - "buyer": { - "@id": "https://trustvc.io/context/terms#buyer", - "@context": { - "@protected": true, - "name": { "@id": "https://trustvc.io/context/terms#partyName" }, - "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } - } - }, - "invoicee": { - "@id": "https://trustvc.io/context/terms#invoicee", - "@context": { - "@protected": true, - "name": { "@id": "https://trustvc.io/context/terms#partyName" }, - "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } - } - }, - "sellersBank": { - "@id": "https://trustvc.io/context/terms#sellersBank", - "@context": { - "@protected": true, - "name": { "@id": "https://trustvc.io/context/terms#partyName" }, - "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } - } - }, - "importer": { - "@id": "https://trustvc.io/context/terms#importer", - "@context": { - "@protected": true, - "name": { "@id": "https://trustvc.io/context/terms#partyName" }, - "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } - } - }, - "exporter": { - "@id": "https://trustvc.io/context/terms#exporter", - "@context": { - "@protected": true, - "name": { "@id": "https://trustvc.io/context/terms#partyName" }, - "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } - } - }, - "documentaryCreditApplicantAgentBank": { - "@id": "https://trustvc.io/context/terms#documentaryCreditApplicantAgentBank", - "@context": { - "@protected": true, - "name": { "@id": "https://trustvc.io/context/terms#partyName" }, - "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } - } + "currencyCode": { + "@id": "https://trustvc.io/context/terms#currencyCode" }, - "documentaryCreditAvailableBank": { - "@id": "https://trustvc.io/context/terms#documentaryCreditAvailableBank", - "@context": { - "@protected": true, - "name": { "@id": "https://trustvc.io/context/terms#partyName" }, - "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } - } + "blDate": { + "@id": "https://trustvc.io/context/terms#blDate" }, - "documentaryCreditBeneficiary": { - "@id": "https://trustvc.io/context/terms#documentaryCreditBeneficiary", - "@context": { - "@protected": true, - "name": { "@id": "https://trustvc.io/context/terms#partyName" }, - "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } - } + "placeOfIssue": { + "@id": "https://trustvc.io/context/terms#placeOfIssue" }, - "documentaryCreditDrawee": { - "@id": "https://trustvc.io/context/terms#documentaryCreditDrawee", - "@context": { - "@protected": true, - "name": { "@id": "https://trustvc.io/context/terms#partyName" }, - "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } - } + "dateOfIssue": { + "@id": "https://trustvc.io/context/terms#dateOfIssue" }, - "seller": { - "@id": "https://trustvc.io/context/terms#seller", - "@context": { - "@protected": true, - "name": { "@id": "https://trustvc.io/context/terms#partyName" }, - "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } - } - }, - "documentaryCreditReimbursingBank": { - "@id": "https://trustvc.io/context/terms#documentaryCreditReimbursingBank", - "@context": { - "@protected": true, - "name": { "@id": "https://trustvc.io/context/terms#partyName" }, - "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } - } + "tenor": { + "@id": "https://trustvc.io/context/terms#tenor" }, "payee": { - "@id": "https://trustvc.io/context/terms#payee", - "@context": { - "@protected": true, - "name": { "@id": "https://trustvc.io/context/terms#partyName" }, - "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } - } + "@id": "https://trustvc.io/context/terms#payee" }, - "buyersBank": { - "@id": "https://trustvc.io/context/terms#buyersBank", - "@context": { - "@protected": true, - "name": { "@id": "https://trustvc.io/context/terms#partyName" }, - "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } - } + "drawnUnder": { + "@id": "https://trustvc.io/context/terms#drawnUnder" }, - "drawer": { - "@id": "https://trustvc.io/context/terms#drawer", - "@context": { - "@protected": true, - "name": { "@id": "https://trustvc.io/context/terms#partyName" }, - "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } - } + "drawnUnderDate": { + "@id": "https://trustvc.io/context/terms#drawnUnderDate" + }, + "issuedBy": { + "@id": "https://trustvc.io/context/terms#issuedBy" }, "drawee": { "@id": "https://trustvc.io/context/terms#drawee", "@context": { "@protected": true, - "name": { "@id": "https://trustvc.io/context/terms#partyName" }, - "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } + "name": { + "@id": "https://trustvc.io/context/terms#partyName" + }, + "address": { + "@id": "https://trustvc.io/context/terms#partyAddress" + }, + "authorisedSignatoryName": { + "@id": "https://trustvc.io/context/terms#authorisedSignatoryName" + }, + "signature": { + "@id": "https://trustvc.io/context/terms#signature" + } } }, - "guarantor": { - "@id": "https://trustvc.io/context/terms#guarantor", + "drawer": { + "@id": "https://trustvc.io/context/terms#drawer", "@context": { "@protected": true, - "name": { "@id": "https://trustvc.io/context/terms#partyName" }, - "address": { "@id": "https://trustvc.io/context/terms#partyAddress" } + "name": { + "@id": "https://trustvc.io/context/terms#partyName" + }, + "address": { + "@id": "https://trustvc.io/context/terms#partyAddress" + }, + "authorisedSignatoryName": { + "@id": "https://trustvc.io/context/terms#authorisedSignatoryName" + }, + "signature": { + "@id": "https://trustvc.io/context/terms#signature" + } } - }, - - "paymentLocation": { - "@id": "https://trustvc.io/context/terms#paymentLocation" - }, - "placeOfIssue": { - "@id": "https://trustvc.io/context/terms#placeOfIssue" - }, - "authentication": { - "@id": "https://trustvc.io/context/terms#authentication" - }, - "paymentTerm": { - "@id": "https://trustvc.io/context/terms#paymentTerm" - }, - "documentEndorsement": { - "@id": "https://trustvc.io/context/terms#documentEndorsement" - }, - "paymentMethod": { - "@id": "https://trustvc.io/context/terms#paymentMethod" - }, - "monetaryAmount": { - "@id": "https://trustvc.io/context/terms#monetaryAmount" - }, - "currencyQualifier": { - "@id": "https://trustvc.io/context/terms#currencyQualifier" - }, - "currencyCode": { - "@id": "https://trustvc.io/context/terms#currencyCode" } } } From 476f78ce62f1a38db957f2ad8bfdff69a8367bf2 Mon Sep 17 00:00:00 2001 From: manishdex25 Date: Wed, 29 Jul 2026 09:37:22 +0530 Subject: [PATCH 06/10] Update packages/w3c-vc/src/lib/helper/index.ts Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- packages/w3c-vc/src/lib/helper/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/w3c-vc/src/lib/helper/index.ts b/packages/w3c-vc/src/lib/helper/index.ts index 7729042..ce4246a 100644 --- a/packages/w3c-vc/src/lib/helper/index.ts +++ b/packages/w3c-vc/src/lib/helper/index.ts @@ -528,7 +528,7 @@ export const _checkCredentialStatus = ( assertBitstringStatusListEntry(credentialStatus as BitstringStatusListCredentialStatus); } else if (type === 'TransferableRecords') { if ( - typeof (credentialStatus as { obligationRegistry?: string }).obligationRegistry === 'string' + Object.prototype.hasOwnProperty.call(credentialStatus, 'obligationRegistry') ) { assertObligationRecords(credentialStatus as ObligationRecordsCredentialStatus, mode); } else { From bae9c6c93ea9644dc2fafd5bfbff184165ff899d Mon Sep 17 00:00:00 2001 From: manishdex25 Date: Wed, 29 Jul 2026 09:50:47 +0530 Subject: [PATCH 07/10] feat: enhance credential status validation with chainId assertions --- .../src/lib/utils.test.ts | 56 +++++++++++++++++++ .../w3c-credential-status/src/lib/utils.ts | 21 ++++++- packages/w3c-vc/src/lib/helper/index.test.ts | 21 +++++++ packages/w3c-vc/src/lib/helper/index.ts | 4 +- scripts/copy-files.sh | 3 + 5 files changed, 100 insertions(+), 5 deletions(-) diff --git a/packages/w3c-credential-status/src/lib/utils.test.ts b/packages/w3c-credential-status/src/lib/utils.test.ts index c47f90d..ad590ec 100644 --- a/packages/w3c-credential-status/src/lib/utils.test.ts +++ b/packages/w3c-credential-status/src/lib/utils.test.ts @@ -2,8 +2,10 @@ import { describe, expect, it } from 'vitest'; import { CredentialStatusPurpose, VCBitstringCredentialSubject } from './types'; import { assertCredentialStatusType, + assertObligationRecords, assertStatusListIndex, assertStatusPurposeMatches, + assertTransferableRecords, fetchCredentialStatusVC, } from './utils'; @@ -55,6 +57,60 @@ describe('utils.ts', () => { }); }); + describe('assertTransferableRecords chainId', () => { + const base = { + type: 'TransferableRecords' as const, + tokenId: 'abc', + tokenRegistry: '0x123', + tokenNetwork: { chain: 'sepolia', chainId: 11155111 as string | number }, + }; + + it('accepts integer number and numeric string chainId', () => { + expect(() => assertTransferableRecords(base)).not.toThrow(); + expect(() => + assertTransferableRecords({ + ...base, + tokenNetwork: { chain: 'sepolia', chainId: '11155111' }, + }), + ).not.toThrow(); + }); + + it.each([ + ['', 'empty string'], + ['abc', 'non-numeric'], + ['1.5', 'fractional'], + [NaN, 'NaN'], + [Infinity, 'Infinity'], + [1.5, 'fractional number'], + ])('rejects invalid chainId (%s / %s)', (chainId) => { + expect(() => + assertTransferableRecords({ + ...base, + tokenNetwork: { chain: 'sepolia', chainId: chainId as string | number }, + }), + ).toThrow(/credentialStatus\.tokenNetwork\.chainId" must be an integer/); + }); + }); + + describe('assertObligationRecords chainId', () => { + const base = { + type: 'TransferableRecords' as const, + tokenId: 'abc', + obligationRegistry: '0x456', + tokenNetwork: { chain: 'sepolia', chainId: 11155111 as string | number }, + }; + + it('accepts integer chainId and rejects invalid values', () => { + expect(() => assertObligationRecords(base)).not.toThrow(); + expect(() => + assertObligationRecords({ + ...base, + tokenNetwork: { chain: 'sepolia', chainId: '' }, + }), + ).toThrow(/credentialStatus\.tokenNetwork\.chainId" must be an integer/); + }); + }); + describe('fetchCredentialStatusVC', () => { it('should fetch a credential status VC successfully', async () => { const vc = await fetchCredentialStatusVC( diff --git a/packages/w3c-credential-status/src/lib/utils.ts b/packages/w3c-credential-status/src/lib/utils.ts index 0845bdf..b8a5f77 100644 --- a/packages/w3c-credential-status/src/lib/utils.ts +++ b/packages/w3c-credential-status/src/lib/utils.ts @@ -127,6 +127,23 @@ const _assertStatusListCredentialStatus = ( export const assertStatusList2021Entry = _assertStatusListCredentialStatus; export const assertBitstringStatusListEntry = _assertStatusListCredentialStatus; +/** + * Asserts that `chainId` is an integer (number or whole numeric string). + * Rejects empty, non-numeric, non-finite, and fractional values. + * @param {string | number} chainId - Chain id from credentialStatus.tokenNetwork. + * @param {string} name - Property name used in the error message. + */ +export const assertIntegerChainId = (chainId: string | number, name: string): void => { + const valid = + typeof chainId === 'number' + ? Number.isSafeInteger(chainId) + : typeof chainId === 'string' && chainId.trim() !== '' && /^[+-]?\d+$/.test(chainId.trim()); + + if (!valid) { + throw new TypeError(`"${name}" must be an integer.`); + } +}; + export const assertTransferableRecords = ( credentialStatus: TransferableRecordsCredentialStatus, mode: 'sign' | 'verify' = 'verify', @@ -149,7 +166,7 @@ export const assertTransferableRecords = ( isString(tokenRegistry, 'credentialStatus.tokenRegistry'); isString(chain, 'credentialStatus.tokenNetwork.chain'); - isNumber(Number(chainId), 'credentialStatus.tokenNetwork.chainId'); + assertIntegerChainId(chainId, 'credentialStatus.tokenNetwork.chainId'); }; /** @@ -179,7 +196,7 @@ export const assertObligationRecords = ( isString(obligationRegistry, 'credentialStatus.obligationRegistry'); isString(chain, 'credentialStatus.tokenNetwork.chain'); - isNumber(Number(chainId), 'credentialStatus.tokenNetwork.chainId'); + assertIntegerChainId(chainId, 'credentialStatus.tokenNetwork.chainId'); }; /** diff --git a/packages/w3c-vc/src/lib/helper/index.test.ts b/packages/w3c-vc/src/lib/helper/index.test.ts index 0d0af7d..7ee7738 100644 --- a/packages/w3c-vc/src/lib/helper/index.test.ts +++ b/packages/w3c-vc/src/lib/helper/index.test.ts @@ -19,6 +19,27 @@ describe('helper', () => { expect(() => _checkCredentialStatus({} as any)).toThrowError('Invalid type'); }); + it('routes to Obligation Records when obligationRegistry is present even if not a string', () => { + const assertObligation = vi + .spyOn(w3c_credential_status, 'assertObligationRecords') + .mockImplementation(() => { + throw new TypeError('"credentialStatus.obligationRegistry" must be a string.'); + }); + const assertTransferable = vi.spyOn(w3c_credential_status, 'assertTransferableRecords'); + + expect(() => + _checkCredentialStatus({ + type: 'TransferableRecords', + obligationRegistry: 123, + tokenRegistry: '0xabc', + tokenNetwork: { chain: 'sepolia', chainId: 11155111 }, + } as any), + ).toThrow(/obligationRegistry" must be a string/); + + expect(assertObligation).toHaveBeenCalled(); + expect(assertTransferable).not.toHaveBeenCalled(); + }); + describe('_checkCredentialStatus', () => { it('should return true if the credential status is valid', () => { vi.spyOn(w3c_credential_status, 'assertStatusList2021Entry').mockResolvedValue(); diff --git a/packages/w3c-vc/src/lib/helper/index.ts b/packages/w3c-vc/src/lib/helper/index.ts index ce4246a..636a619 100644 --- a/packages/w3c-vc/src/lib/helper/index.ts +++ b/packages/w3c-vc/src/lib/helper/index.ts @@ -527,9 +527,7 @@ export const _checkCredentialStatus = ( } else if (type === 'BitstringStatusListEntry') { assertBitstringStatusListEntry(credentialStatus as BitstringStatusListCredentialStatus); } else if (type === 'TransferableRecords') { - if ( - Object.prototype.hasOwnProperty.call(credentialStatus, 'obligationRegistry') - ) { + if (Object.prototype.hasOwnProperty.call(credentialStatus, 'obligationRegistry')) { assertObligationRecords(credentialStatus as ObligationRecordsCredentialStatus, mode); } else { assertTransferableRecords(credentialStatus as TransferableRecordsCredentialStatus, mode); diff --git a/scripts/copy-files.sh b/scripts/copy-files.sh index dee0f88..c999636 100644 --- a/scripts/copy-files.sh +++ b/scripts/copy-files.sh @@ -15,14 +15,17 @@ mkdir -p "$DEST_DIR" # List of files to copy FILES=( "attachments-context.json" + "bill-of-exchange.json" "bill-of-lading.json" "bill-of-lading-carrier.json" "coo.json" "invoice.json" + "obligation-records-context.json" "opencerts-demo-context.json" "promissory-note.json" "qrcode-context.json" "render-method-context.json" + "render-method-context-v2.json" "transferable-records-context.json" "warehouse-receipt.json" ) From 0eaed364bcb2e630b9cbd92d0ea5c8acd3daf46a Mon Sep 17 00:00:00 2001 From: manishdex25 Date: Wed, 29 Jul 2026 10:21:10 +0530 Subject: [PATCH 08/10] fix: update chainId type handling in assertTransferableRecords test --- packages/w3c-credential-status/src/lib/utils.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/w3c-credential-status/src/lib/utils.test.ts b/packages/w3c-credential-status/src/lib/utils.test.ts index ad590ec..8684836 100644 --- a/packages/w3c-credential-status/src/lib/utils.test.ts +++ b/packages/w3c-credential-status/src/lib/utils.test.ts @@ -82,11 +82,11 @@ describe('utils.ts', () => { [NaN, 'NaN'], [Infinity, 'Infinity'], [1.5, 'fractional number'], - ])('rejects invalid chainId (%s / %s)', (chainId) => { + ])('rejects invalid chainId (%s / %s)', (chainId: string | number, _label: string) => { expect(() => assertTransferableRecords({ ...base, - tokenNetwork: { chain: 'sepolia', chainId: chainId as string | number }, + tokenNetwork: { chain: 'sepolia', chainId }, }), ).toThrow(/credentialStatus\.tokenNetwork\.chainId" must be an integer/); }); From 96a781d22cc97787a46312c6339723ab5aa8792c Mon Sep 17 00:00:00 2001 From: manishdex25 Date: Wed, 29 Jul 2026 10:26:03 +0530 Subject: [PATCH 09/10] feat: add Render Methods v2 context to README --- packages/w3c-context/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/w3c-context/README.md b/packages/w3c-context/README.md index 8f6c787..ce96fa3 100644 --- a/packages/w3c-context/README.md +++ b/packages/w3c-context/README.md @@ -71,6 +71,7 @@ The package includes the following pre-cached contexts: - `https://trustvc.io/context/transferable-records-context.json` - Transferable Records - `https://trustvc.io/context/obligation-records-context.json` - Obligation Records (BoE) - `https://trustvc.io/context/render-method-context.json` - Render Methods +- `https://trustvc.io/context/render-method-context-v2.json` - Render Methods v2 - `https://trustvc.io/context/attachments-context.json` - Attachments - `https://trustvc.io/context/qrcode-context.json` - QR Code - `https://trustvc.io/context/opencerts-context.json` - OpenCerts Certificate From 615d55782646fff2b8454ef6457a6084451b5c1d Mon Sep 17 00:00:00 2001 From: manishdex25 Date: Wed, 29 Jul 2026 11:37:23 +0530 Subject: [PATCH 10/10] fix: replace deprecated Object.prototype.hasOwnProperty with Object.hasOwn for better compatibility --- packages/w3c-vc/src/lib/helper/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/w3c-vc/src/lib/helper/index.ts b/packages/w3c-vc/src/lib/helper/index.ts index 636a619..45c3c6f 100644 --- a/packages/w3c-vc/src/lib/helper/index.ts +++ b/packages/w3c-vc/src/lib/helper/index.ts @@ -527,7 +527,7 @@ export const _checkCredentialStatus = ( } else if (type === 'BitstringStatusListEntry') { assertBitstringStatusListEntry(credentialStatus as BitstringStatusListCredentialStatus); } else if (type === 'TransferableRecords') { - if (Object.prototype.hasOwnProperty.call(credentialStatus, 'obligationRegistry')) { + if (Object.hasOwn(credentialStatus, 'obligationRegistry')) { assertObligationRecords(credentialStatus as ObligationRecordsCredentialStatus, mode); } else { assertTransferableRecords(credentialStatus as TransferableRecordsCredentialStatus, mode);