From c0ae2ede2cb2ceeab25dfc52411061dab649d314 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 6 Sep 2024 16:35:59 +1000 Subject: [PATCH] Complete order 4 hours after order cycle closed --- app/jobs/backorder_job.rb | 16 +- app/jobs/complete_backorder_job.rb | 11 ++ app/services/fdc_backorderer.rb | 6 +- .../_check_stock/places_an_order.yml | 154 ++++++++++++++---- spec/jobs/backorder_job_spec.rb | 8 +- 5 files changed, 162 insertions(+), 33 deletions(-) create mode 100644 app/jobs/complete_backorder_job.rb diff --git a/app/jobs/backorder_job.rb b/app/jobs/backorder_job.rb index ab949d1010..2c20dbbb4a 100644 --- a/app/jobs/backorder_job.rb +++ b/app/jobs/backorder_job.rb @@ -5,6 +5,11 @@ class BackorderJob < ApplicationJob FDC_CATALOG_URL = "#{FDC_BASE_URL}/SuppliedProducts".freeze FDC_ORDERS_URL = "#{FDC_BASE_URL}/Orders".freeze + # In the current FDC project, the shop wants to review and adjust orders + # before finalising. They also run a market stall and need to adjust stock + # levels after the market. This should be done within four hours. + SALE_SESSION_DELAY = 4.hours + queue_as :default def self.check_stock(order) @@ -27,7 +32,8 @@ class BackorderJob < ApplicationJob end def self.place_backorder(order, linked_variants) - orderer = FdcBackorderer.new(order.distributor.owner) + user = order.distributor.owner + orderer = FdcBackorderer.new(user) backorder = orderer.find_or_build_order(order) catalog = load_catalog(order.distributor.owner) @@ -39,7 +45,13 @@ class BackorderJob < ApplicationJob line.quantity = line.quantity.to_i + needed_quantity end - orderer.send_order(backorder) + placed_order = orderer.send_order(backorder) + + if orderer.new?(backorder) + wait_until = order.order_cycle.orders_close_at + SALE_SESSION_DELAY + CompleteBackorderJob.set(wait_until:) + .perform_later(user, placed_order.semanticId) + end # Once we have transformations and know the quantities in bulk products # we will need to increase on_hand by the ordered quantity. diff --git a/app/jobs/complete_backorder_job.rb b/app/jobs/complete_backorder_job.rb new file mode 100644 index 0000000000..cc515518b8 --- /dev/null +++ b/app/jobs/complete_backorder_job.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +# After an order cycle closed, we need to finalise open draft orders placed +# to replenish stock. +class CompleteBackorderJob < ApplicationJob + def perform(user, order_id) + # TODO: review our stock levels and adjust quantities if we got surplus. + # This can happen when orders are cancelled and products restocked. + FdcBackorderer.new(user).complete_order(order_id) + end +end diff --git a/app/services/fdc_backorderer.rb b/app/services/fdc_backorderer.rb index a6aca18f4f..1e7ed15308 100644 --- a/app/services/fdc_backorderer.rb +++ b/app/services/fdc_backorderer.rb @@ -97,7 +97,7 @@ class FdcBackorderer api = DfcRequest.new(user) - method = if backorder.semanticId == FDC_ORDERS_URL + method = if new?(backorder) :post # -> create else :put # -> update @@ -115,6 +115,10 @@ class FdcBackorderer send_order(backorder) end + def new?(order) + order.semanticId == FDC_ORDERS_URL + end + def build_sale_session(order) SaleSessionBuilder.build(order.order_cycle).tap do |session| session.semanticId = FDC_SALE_SESSION_URL diff --git a/spec/fixtures/vcr_cassettes/BackorderJob/_check_stock/places_an_order.yml b/spec/fixtures/vcr_cassettes/BackorderJob/_check_stock/places_an_order.yml index 5f9d693e8a..7e7aea1975 100644 --- a/spec/fixtures/vcr_cassettes/BackorderJob/_check_stock/places_an_order.yml +++ b/spec/fixtures/vcr_cassettes/BackorderJob/_check_stock/places_an_order.yml @@ -25,7 +25,7 @@ http_interactions: Server: - openresty Date: - - Fri, 06 Sep 2024 00:45:44 GMT + - Fri, 06 Sep 2024 06:34:27 GMT Content-Type: - application/json; charset=utf-8 Content-Length: @@ -43,7 +43,7 @@ http_interactions: body: encoding: UTF-8 string: '{"message":"User access denied - token missing","error":"User not authorized"}' - recorded_at: Fri, 06 Sep 2024 00:45:45 GMT + recorded_at: Fri, 06 Sep 2024 06:34:27 GMT - request: method: get uri: https://login.lescommuns.org/auth/realms/data-food-consortium/.well-known/openid-configuration @@ -63,7 +63,7 @@ http_interactions: message: OK headers: Date: - - Fri, 06 Sep 2024 00:45:46 GMT + - Fri, 06 Sep 2024 06:34:29 GMT Content-Type: - application/json;charset=UTF-8 Transfer-Encoding: @@ -73,7 +73,7 @@ http_interactions: Vary: - Accept-Encoding Set-Cookie: - - AUTH_SESSION_ID=1725583547.644.77404.649203|78230f584c0d7db97d376e98de5321dc; + - AUTH_SESSION_ID=1725604470.093.140040.499793|78230f584c0d7db97d376e98de5321dc; Path=/; Secure; HttpOnly Cache-Control: - no-cache, must-revalidate, no-transform, no-store @@ -91,7 +91,7 @@ http_interactions: encoding: ASCII-8BIT string: '{"issuer":"https://login.lescommuns.org/auth/realms/data-food-consortium","authorization_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/auth","token_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/token","introspection_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/token/introspect","userinfo_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/userinfo","end_session_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/logout","frontchannel_logout_session_supported":true,"frontchannel_logout_supported":true,"jwks_uri":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/certs","check_session_iframe":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/login-status-iframe.html","grant_types_supported":["authorization_code","implicit","refresh_token","password","client_credentials","urn:openid:params:grant-type:ciba","urn:ietf:params:oauth:grant-type:device_code"],"acr_values_supported":["0","1"],"response_types_supported":["code","none","id_token","token","id_token token","code id_token","code token","code id_token token"],"subject_types_supported":["public","pairwise"],"id_token_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512"],"id_token_encryption_alg_values_supported":["RSA-OAEP","RSA-OAEP-256","RSA1_5"],"id_token_encryption_enc_values_supported":["A256GCM","A192GCM","A128GCM","A128CBC-HS256","A192CBC-HS384","A256CBC-HS512"],"userinfo_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512","none"],"userinfo_encryption_alg_values_supported":["RSA-OAEP","RSA-OAEP-256","RSA1_5"],"userinfo_encryption_enc_values_supported":["A256GCM","A192GCM","A128GCM","A128CBC-HS256","A192CBC-HS384","A256CBC-HS512"],"request_object_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512","none"],"request_object_encryption_alg_values_supported":["RSA-OAEP","RSA-OAEP-256","RSA1_5"],"request_object_encryption_enc_values_supported":["A256GCM","A192GCM","A128GCM","A128CBC-HS256","A192CBC-HS384","A256CBC-HS512"],"response_modes_supported":["query","fragment","form_post","query.jwt","fragment.jwt","form_post.jwt","jwt"],"registration_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/clients-registrations/openid-connect","token_endpoint_auth_methods_supported":["private_key_jwt","client_secret_basic","client_secret_post","tls_client_auth","client_secret_jwt"],"token_endpoint_auth_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512"],"introspection_endpoint_auth_methods_supported":["private_key_jwt","client_secret_basic","client_secret_post","tls_client_auth","client_secret_jwt"],"introspection_endpoint_auth_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512"],"authorization_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512"],"authorization_encryption_alg_values_supported":["RSA-OAEP","RSA-OAEP-256","RSA1_5"],"authorization_encryption_enc_values_supported":["A256GCM","A192GCM","A128GCM","A128CBC-HS256","A192CBC-HS384","A256CBC-HS512"],"claims_supported":["aud","sub","iss","auth_time","name","given_name","family_name","preferred_username","email","acr"],"claim_types_supported":["normal"],"claims_parameter_supported":true,"scopes_supported":["openid","microprofile-jwt","phone","roles","profile","email","address","web-origins","acr","offline_access"],"request_parameter_supported":true,"request_uri_parameter_supported":true,"require_request_uri_registration":true,"code_challenge_methods_supported":["plain","S256"],"tls_client_certificate_bound_access_tokens":true,"revocation_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/revoke","revocation_endpoint_auth_methods_supported":["private_key_jwt","client_secret_basic","client_secret_post","tls_client_auth","client_secret_jwt"],"revocation_endpoint_auth_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512"],"backchannel_logout_supported":true,"backchannel_logout_session_supported":true,"device_authorization_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/auth/device","backchannel_token_delivery_modes_supported":["poll","ping"],"backchannel_authentication_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/ext/ciba/auth","backchannel_authentication_request_signing_alg_values_supported":["PS384","ES384","RS384","ES256","RS256","ES512","PS256","PS512","RS512"],"require_pushed_authorization_requests":false,"pushed_authorization_request_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/ext/par/request","mtls_endpoint_aliases":{"token_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/token","revocation_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/revoke","introspection_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/token/introspect","device_authorization_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/auth/device","registration_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/clients-registrations/openid-connect","userinfo_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/userinfo","pushed_authorization_request_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/ext/par/request","backchannel_authentication_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/ext/ciba/auth"},"authorization_response_iss_parameter_supported":true}' - recorded_at: Fri, 06 Sep 2024 00:45:46 GMT + recorded_at: Fri, 06 Sep 2024 06:34:28 GMT - request: method: post uri: https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/token @@ -115,7 +115,7 @@ http_interactions: message: OK headers: Date: - - Fri, 06 Sep 2024 00:45:47 GMT + - Fri, 06 Sep 2024 06:34:30 GMT Content-Type: - application/json Transfer-Encoding: @@ -125,7 +125,7 @@ http_interactions: Vary: - Accept-Encoding Set-Cookie: - - AUTH_SESSION_ID=1725583548.878.62576.728167|78230f584c0d7db97d376e98de5321dc; + - AUTH_SESSION_ID=1725604471.327.25538.568072|78230f584c0d7db97d376e98de5321dc; Path=/; Secure; HttpOnly Cache-Control: - no-store @@ -143,9 +143,9 @@ http_interactions: - 1; mode=block body: encoding: ASCII-8BIT - string: '{"access_token":"","expires_in":1800,"refresh_expires_in":31459646,"refresh_token":"","token_type":"Bearer","id_token":"","not-before-policy":0,"session_state":"78c74723-7be8-4383-a612-ad9e0bd2ddf9","scope":"openid + string: '{"access_token":"","expires_in":1800,"refresh_expires_in":31438723,"refresh_token":"","token_type":"Bearer","id_token":"","not-before-policy":0,"session_state":"78c74723-7be8-4383-a612-ad9e0bd2ddf9","scope":"openid profile email"}' - recorded_at: Fri, 06 Sep 2024 00:45:47 GMT + recorded_at: Fri, 06 Sep 2024 06:34:30 GMT - request: method: get uri: https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders @@ -171,11 +171,11 @@ http_interactions: Server: - openresty Date: - - Fri, 06 Sep 2024 00:45:50 GMT + - Fri, 06 Sep 2024 06:34:32 GMT Content-Type: - application/json; charset=utf-8 Content-Length: - - '49' + - '4294' Connection: - keep-alive X-Powered-By: @@ -183,19 +183,19 @@ http_interactions: Access-Control-Allow-Origin: - "*" Pageinfo: - - '{"hasPreviousPage":false,"hasNextPage":false,"startCursor":"eyJsYXN0X2lkIjoxMTQ5MTQ0NDk4NDgzLCJsYXN0X3ZhbHVlIjoxMTQ5MTQ0NDk4NDgzfQ==","endCursor":"eyJsYXN0X2lkIjoxMTc1MjA2Mjk3OTA3LCJsYXN0X3ZhbHVlIjoxMTc1MjA2Mjk3OTA3fQ=="}' + - '{"hasPreviousPage":false,"hasNextPage":false,"startCursor":"eyJsYXN0X2lkIjoxMTQ5MTQ0NDk4NDgzLCJsYXN0X3ZhbHVlIjoxMTQ5MTQ0NDk4NDgzfQ==","endCursor":"eyJsYXN0X2lkIjoxMTc1MzI5OTMxNTcxLCJsYXN0X3ZhbHVlIjoxMTc1MzI5OTMxNTcxfQ=="}' Etag: - - W/"31-rTkGg4EZph+3tLDiAHChQG/IkJQ" + - W/"10c6-/9Bpm9vg1Cu+yMxxh5vHKVjA/1M" Set-Cookie: - SRVGROUP=common; path=/; HttpOnly X-Resolver-Ip: - - 185.172.100.59 + - 185.172.100.60 Strict-Transport-Security: - max-age=15811200 body: encoding: UTF-8 - string: '{"@context":"https://www.datafoodconsortium.org"}' - recorded_at: Fri, 06 Sep 2024 00:45:50 GMT + string: '{"@context":"https://www.datafoodconsortium.org","@graph":[{"@id":"_:b253","@type":"dfc-b:Price","dfc-b:hasUnit":"dfc-m:PoundSterling","dfc-b:value":"2.09"},{"@id":"_:b254","@type":"dfc-b:Price","dfc-b:hasUnit":"dfc-m:PoundSterling","dfc-b:value":"2.09"},{"@id":"_:b255","@type":"dfc-b:Price","dfc-b:hasUnit":"dfc-m:PoundSterling","dfc-b:value":"2.09"},{"@id":"_:b256","@type":"dfc-b:Price","dfc-b:hasUnit":"dfc-m:PoundSterling","dfc-b:value":"2.09"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Offers/44519466467635","@type":["dfc-b:Offer","dfc-b:Offer","dfc-b:Offer","dfc-b:Offer"],"dfc-b:offeredItem":[{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635"}]},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175325245747","@type":"dfc-b:Order","dfc-b:hasFulfilmentStatus":{"@id":"dfc-v:Unfulfilled"},"dfc-b:hasOrderStatus":{"@id":"dfc-v:Complete"},"dfc-b:hasPart":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175325245747/orderLines/133"}},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175325245747/orderLines/133","@type":"dfc-b:OrderLine","dfc-b:concerns":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Offers/44519466467635"},"dfc-b:hasPrice":{"@id":"_:b253"},"dfc-b:quantity":"3"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175327080755","@type":"dfc-b:Order","dfc-b:hasFulfilmentStatus":{"@id":"dfc-v:Unfulfilled"},"dfc-b:hasOrderStatus":{"@id":"dfc-v:Complete"},"dfc-b:hasPart":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175327080755/orderLines/135"}},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175327080755/orderLines/135","@type":"dfc-b:OrderLine","dfc-b:concerns":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Offers/44519466467635"},"dfc-b:hasPrice":{"@id":"_:b254"},"dfc-b:quantity":"3"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175329734963","@type":"dfc-b:Order","dfc-b:hasFulfilmentStatus":{"@id":"dfc-v:Unfulfilled"},"dfc-b:hasOrderStatus":{"@id":"dfc-v:Complete"},"dfc-b:hasPart":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175329734963/orderLines/137"}},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175329734963/orderLines/137","@type":"dfc-b:OrderLine","dfc-b:concerns":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Offers/44519466467635"},"dfc-b:hasPrice":{"@id":"_:b255"},"dfc-b:quantity":"3"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175329931571","@type":"dfc-b:Order","dfc-b:hasFulfilmentStatus":{"@id":"dfc-v:Unfulfilled"},"dfc-b:hasOrderStatus":{"@id":"dfc-v:Complete"},"dfc-b:hasPart":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175329931571/orderLines/139"}},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175329931571/orderLines/139","@type":"dfc-b:OrderLine","dfc-b:concerns":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Offers/44519466467635"},"dfc-b:hasPrice":{"@id":"_:b256"},"dfc-b:quantity":"3"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635","@type":["dfc-b:SuppliedProduct","dfc-b:SuppliedProduct","dfc-b:SuppliedProduct","dfc-b:SuppliedProduct"]}]}' + recorded_at: Fri, 06 Sep 2024 06:34:32 GMT - request: method: get uri: https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts @@ -221,11 +221,11 @@ http_interactions: Server: - openresty Date: - - Fri, 06 Sep 2024 00:45:51 GMT + - Fri, 06 Sep 2024 06:34:34 GMT Content-Type: - text/html; charset=utf-8 Content-Length: - - '20843' + - '20885' Connection: - keep-alive X-Powered-By: @@ -233,24 +233,24 @@ http_interactions: Access-Control-Allow-Origin: - "*" Etag: - - W/"516b-V4WvW2VEcc2GZxiJaqkOn/HJzZQ" + - W/"5195-nCWLwhFjDbA80G1xk3Y2vYBleAs" Set-Cookie: - SRVGROUP=common; path=/; HttpOnly X-Resolver-Ip: - - 185.172.100.60 + - 185.172.100.59 Strict-Transport-Security: - max-age=15811200 body: encoding: ASCII-8BIT string: !binary |- - eyJAY29udGV4dCI6Imh0dHBzOi8vd3d3LmRhdGFmb29kY29uc29ydGl1bS5vcmciLCJAZ3JhcGgiOlt7IkBpZCI6Il86YjEiLCJAdHlwZSI6ImRmYy1iOlF1YW50aXRhdGl2ZVZhbHVlIiwiZGZjLWI6aGFzVW5pdCI6ImRmYy1tOktpbG9ncmFtIiwiZGZjLWI6dmFsdWUiOiIwLjQifSx7IkBpZCI6Il86YjEwIiwiQHR5cGUiOiJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZSIsImRmYy1iOmhhc1VuaXQiOiJkZmMtbTpQaWVjZSIsImRmYy1iOnZhbHVlIjoiMSJ9LHsiQGlkIjoiXzpiMTEiLCJAdHlwZSI6ImRmYy1iOlF1YW50aXRhdGl2ZVZhbHVlIiwiZGZjLWI6aGFzVW5pdCI6ImRmYy1tOlBpZWNlIiwiZGZjLWI6dmFsdWUiOiI4In0seyJAaWQiOiJfOmIxMiIsIkB0eXBlIjoiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWUiLCJkZmMtYjpoYXNVbml0IjoiZGZjLW06UGllY2UiLCJkZmMtYjp2YWx1ZSI6IjEifSx7IkBpZCI6Il86YjIiLCJAdHlwZSI6ImRmYy1iOlByaWNlIiwiZGZjLWI6VkFUcmF0ZSI6IjAiLCJkZmMtYjpoYXNVbml0IjoiZGZjLW06RXVybyIsImRmYy1iOnZhbHVlIjoiMi4wOSJ9LHsiQGlkIjoiXzpiMyIsIkB0eXBlIjoiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWUiLCJkZmMtYjpoYXNVbml0IjoiZGZjLW06S2lsb2dyYW0iLCJkZmMtYjp2YWx1ZSI6IjAuMyJ9LHsiQGlkIjoiXzpiNCIsIkB0eXBlIjoiZGZjLWI6UHJpY2UiLCJkZmMtYjpWQVRyYXRlIjoiMCIsImRmYy1iOmhhc1VuaXQiOiJkZmMtbTpFdXJvIiwiZGZjLWI6dmFsdWUiOiIzLjk5In0seyJAaWQiOiJfOmI1IiwiQHR5cGUiOiJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZSIsImRmYy1iOmhhc1VuaXQiOiJkZmMtbTpLaWxvZ3JhbSIsImRmYy1iOnZhbHVlIjoiNC44In0seyJAaWQiOiJfOmI2IiwiQHR5cGUiOiJkZmMtYjpQcmljZSIsImRmYy1iOlZBVHJhdGUiOiIwIiwiZGZjLWI6aGFzVW5pdCI6ImRmYy1tOkV1cm8iLCJkZmMtYjp2YWx1ZSI6IjE4Ljg1In0seyJAaWQiOiJfOmI3IiwiQHR5cGUiOiJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZSIsImRmYy1iOmhhc1VuaXQiOiJkZmMtbTpLaWxvZ3JhbSIsImRmYy1iOnZhbHVlIjoiMi40In0seyJAaWQiOiJfOmI4IiwiQHR5cGUiOiJkZmMtYjpQcmljZSIsImRmYy1iOlZBVHJhdGUiOiIwIiwiZGZjLWI6aGFzVW5pdCI6ImRmYy1tOkV1cm8iLCJkZmMtYjp2YWx1ZSI6IjIzLjk1In0seyJAaWQiOiJfOmI5IiwiQHR5cGUiOiJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZSIsImRmYy1iOmhhc1VuaXQiOiJkZmMtbTpQaWVjZSIsImRmYy1iOnZhbHVlIjoiMTIifSx7IkBpZCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NjQ2NzYzNSIsIkB0eXBlIjoiZGZjLWI6U3VwcGxpZWRQcm9kdWN0IiwiZGZjLWI6ZGVzY3JpcHRpb24iOiI8dGFibGUgd2lkdGg9XCIxMDAlXCI+XG48dGJvZHk+XG48dHIgc3R5bGU9XCJib3JkZXI6IDBweDtcIj5cbjx0ZCBiZ2NvbG9yPVwiI2Q2ZmJlZFwiIHN0eWxlPVwiY29sb3I6ICMwMDAwMDA7IGJvcmRlcjogMHB4O1wiPjxzdHJvbmc+VGhleSdyZSBiYWNrITwvc3Ryb25nPjwvdGQ+XG48L3RyPlxuPC90Ym9keT5cbjwvdGFibGU+XG48cD48c3Ryb25nPlRoaW5rIGJha2VkIGJlYW5zIGFyZSBCcml0aXNoPyBUaGV5IGFyZSBub3chIFdlIHVzZSBvbmx5IEJyaXRpc2gtZ3Jvd24gZmF2YSBiZWFucyAtIEJyaXRhaW4ncyBvcmlnaW5hbCBiZWFuLCBncm93biBoZXJlIHNpbmNlIHRoZSBJcm9uIEFnZS4gT3VyIEJha2VkIEJyaXRpc2ggQmVhbnMgYXJlIGRlbGljaW91c2x5IGRpZmZlcmVudCwgd2l0aCBsYXJnZSBtZWF0eSBmYXZhIGJlYW5zIGluIGEgdGFzdHkgdG9tYXRvIHNhdWNlLjwvc3Ryb25nPjwvcD5cbjxwPjxzdHJvbmc+PGEgdGl0bGU9XCJXaGF0IGFyZSBmYXZhIGJlYW5zPyBBcmVuJ3QgdGhleSBqdXN0IGJyb2FkIGJlYW5zP1wiIGhyZWY9XCIvYmxvZ3MvbmV3cy93aGF0LWFyZS1mYXZhLWJlYW5zLWFyZS10aGV5LWp1c3QtYnJvYWQtYmVhbnNcIiBkYXRhLW1jZS1mcmFnbWVudD1cIjFcIiBkYXRhLW1jZS1ocmVmPVwiL2Jsb2dzL25ld3Mvd2hhdC1hcmUtZmF2YS1iZWFucy1hcmUtdGhleS1qdXN0LWJyb2FkLWJlYW5zXCI+V2hhdCBhcmUgZmF2YSBiZWFucz8gRmluZCBvdXQgaGVyZS4uLjwvYT48L3N0cm9uZz48L3A+XG48IS0tIHNwbGl0IC0tPjxoMz5Db21wbGV0ZSBQcm9kdWN0IERldGFpbHM8L2gzPjxwPk91ciBCYWtlZCBCcml0aXNoIEJlYW5zIGFyZSBjb29rZWQgYW5kIHJlYWR5IHRvIGVhdCwgaG90IG9yIGNvbGQuIFRoZXkncmUgZ29vZCBzZXJ2ZWQgb24gdG9hc3QgYnV0IGFsc28gZGVsaWNpb3VzIGFkZGVkIHRvIHN0ZXdzLCBjdXJyaWVzIG9yIGNhc3Nlcm9sZXMuIE9yIGV2ZW4gaW4gYSBwaWUuPC9wPlxuPGg1IGNsYXNzPVwicHJvZHVjdC1kZXRhaWwtdGl0bGVcIj5Db29raW5nIGluc3RydWN0aW9uczwvaDU+XG48cD48c3Ryb25nPkNvb2tpbmcgb24gdGhlIEhvYjwvc3Ryb25nPjxicj5FbXB0eSBjb250ZW50cyBpbnRvIHNhdWNlcGFuLiBIZWF0IGdlbnRseSBmb3IgNC01IG1pbnV0ZXMgd2hpbGUgc3RpcnJpbmcuIEZvciBiZXN0IGZsYXZvdXIgZG8gbm90IGJvaWwgb3Igb3ZlcmNvb2suIERvIG5vdCByZWhlYXQuPC9wPlxuPHA+PHN0cm9uZz5NaWNyb3dhdmUgQ29va2luZzwvc3Ryb25nPjxicj5FbXB0eSBjb250ZW50cyBpbnRvIGEgbm9uLW1ldGFsbGljIGJvd2wgYW5kIGNvdmVyLiBIZWF0IGZvciAyIHRvIDMgbWludXRlcywgc3RpcnJpbmcgaGFsZndheS4gQ2hlY2sgdGhlIGZvb2QgaXMgaG90LCBzdGlyIHdlbGwgYW5kIHNlcnZlLiBEbyBub3QgcmVoZWF0LjwvcD5cbjxoNSBjbGFzcz1cInByb2R1Y3QtZGV0YWlsLXRpdGxlXCI+VG8gU3RvcmU8L2g1PlxuPHA+U3RvcmUgaW4gYSBjb29sLCBkcnkgcGxhY2UuIE9uY2Ugb3BlbmVkLCB0cmFuc2ZlciBjb250ZW50cyB0byBhIG5vbi1tZXRhbGxpYyBjb250YWluZXIsIGNvdmVyIHJlZnJpZ2VyYXRlIGFuZCB1c2Ugd2l0aCAyIGRheXMuPC9wPlxuPGg1IGNsYXNzPVwicHJvZHVjdC1kZXRhaWwtdGl0bGVcIj5JbmdyZWRpZW50czwvaDU+XG48cD5GYXZhIEJlYW5zIChCcm9hZCBCZWFucykgKDQyJSksIFdhdGVyLCBUb21hdG8gUHVyZWUsIFN1Z2FyLCBNb2RpZmllZCBNYWl6ZSBTdGFyY2gsIFNhbHQsIEhlcmJzICZhbXA7IFNwaWNlcywgQ29uY2VudHJhdGVkIExlbW9uIEp1aWNlPC9wPlxuPGg1IGNsYXNzPVwicHJvZHVjdC1kZXRhaWwtdGl0bGVcIj5BbGxlcmd5IGluZm9ybWF0aW9uPC9oNT5cbjxwPk5vIEFsbGVyZ2VuczwvcD5cbjx0YWJsZSB3aWR0aD1cIjEwMCVcIj5cbjx0Ym9keT5cbjx0cj5cbjx0ZD48c3Ryb25nPlR5cGljYWwgdmFsdWVzPC9zdHJvbmc+PC90ZD5cbjx0ZD48c3Ryb25nPlBlciAxMDBnPC9zdHJvbmc+PC90ZD5cbjwvdHI+XG48dHI+XG48dGQ+RW5lcmd5PC90ZD5cbjx0ZD4yOTJrSiAoNjlrY2FsKTwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkPkZhdDwvdGQ+XG48dGQ+MC40ZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkPm9mIHdoaWNoIHNhdHVyYXRlczwvdGQ+XG48dGQ+MC4xZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkPkNhcmJvaHlkcmF0ZTwvdGQ+XG48dGQ+MTAuMWc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZD5vZiB3aGljaCBzdWdhcnM8L3RkPlxuPHRkPjQuNmc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZD5GaWJyZTwvdGQ+XG48dGQ+NWc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZD5Qcm90ZWluPC90ZD5cbjx0ZD40ZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkPlNhbHQ8L3RkPlxuPHRkPjAuNmc8L3RkPlxuPC90cj5cbjwvdGJvZHk+XG48L3RhYmxlPjxoNSBjbGFzcz1cInByb2R1Y3QtZGV0YWlsLXRpdGxlXCI+TW9yZTwvaDU+XG48cD5EZWxpY2lvdXMsIG51dHJpdGlvdXMgYW5kIGdvb2QgZm9yIHRoZSBzb2lsLCBmYXZhIGJlYW5zIGFyZSBhIHZhcmlldHkgb2YgYnJvYWQgYmVhbiwgVmljaWEgZmFiYSwgbGVmdCB0byByaXBlbiBhbmQgZHJ5IGJlZm9yZSBoYXJ2ZXN0LiBUaGV54oCZcmUgYWxzbyBrbm93biBhcyBmaWVsZCBiZWFucywgaG9yc2UgYmVhbnMsIFdpbmRzb3IgYmVhbnMgb3IgZnVsLjwvcD5cbjxwPlN1aXRhYmxlIGZvciB2ZWdhbnMgYW5kIHZlZ2V0YXJpYW5zPC9wPlxuIiwiZGZjLWI6aGFzUXVhbnRpdHkiOiJfOmIxIiwiZGZjLWI6aW1hZ2UiOiJodHRwczovL2Nkbi5zaG9waWZ5LmNvbS9zL2ZpbGVzLzEvMDczMS84NDgzLzc5MzkvcHJvZHVjdHMvUGFjay1DYW4tQmFrZWQtQmVhbnMtMTgwMHg2Xzk4M3g2NTZfNTEzNzU4ZTYtMjYxNi00Njg3LWE4YjItYmE2ZGRlODY0OTIzLmpwZz92PTE2Nzc3NjA3NzgiLCJkZmMtYjpuYW1lIjoiQmFrZWQgQnJpdGlzaCBCZWFucyAtIFJldGFpbCBjYW4sIDQwMGcgKGNhbikiLCJkZmMtYjpyZWZlcmVuY2VkQnkiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjY0Njc2MzUvQ2F0YWxvZ0l0ZW0ifSx7IkBpZCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NjQ2NzYzNS9Bc1BsYW5uZWRDb25zdW1wdGlvbkZsb3ciLCJAdHlwZSI6ImRmYy1iOkFzUGxhbm5lZENvbnN1bXB0aW9uRmxvdyIsImRmYy1iOmNvbnN1bWVzIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY2NDY3NjM1IiwiZGZjLWI6aGFzUXVhbnRpdHkiOiJfOmI5In0seyJAaWQiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjY0Njc2MzUvQXNQbGFubmVkUHJvZHVjdGlvbkZsb3ciLCJAdHlwZSI6ImRmYy1iOkFzUGxhbm5lZFByb2R1Y3Rpb25GbG93IiwiZGZjLWI6aGFzUXVhbnRpdHkiOiJfOmIxMCIsImRmYy1iOnByb2R1Y2VzIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY2NTAwNDAzIn0seyJAaWQiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjY0Njc2MzUvQXNQbGFubmVkVHJhbnNmb3JtYXRpb24iLCJAdHlwZSI6ImRmYy1iOkFzUGxhbm5lZFRyYW5zZm9ybWF0aW9uIiwiZGZjLWI6aGFzSW5jb21lIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY2NDY3NjM1L0FzUGxhbm5lZENvbnN1bXB0aW9uRmxvdyIsImRmYy1iOmhhc091dGNvbWUiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjY0Njc2MzUvQXNQbGFubmVkUHJvZHVjdGlvbkZsb3cifSx7IkBpZCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NjQ2NzYzNS9DYXRhbG9nSXRlbSIsIkB0eXBlIjoiZGZjLWI6Q2F0YWxvZ0l0ZW0iLCJkZmMtYjpvZmZlcmVkVGhyb3VnaCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NjQ2NzYzNS9PZmZlciIsImRmYy1iOnNrdSI6Ik5DQkIvVDQiLCJkZmMtYjpzdG9ja0xpbWl0YXRpb24iOiItMSJ9LHsiQGlkIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY2NDY3NjM1L09mZmVyIiwiQHR5cGUiOiJkZmMtYjpPZmZlciIsImRmYy1iOmhhc1ByaWNlIjp7IkBpZCI6Il86YjIifX0seyJAaWQiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjY1MDA0MDMiLCJAdHlwZSI6ImRmYy1iOlN1cHBsaWVkUHJvZHVjdCIsImRmYy1iOmRlc2NyaXB0aW9uIjoiPHRhYmxlIHdpZHRoPVwiMTAwJVwiPlxuPHRib2R5PlxuPHRyIHN0eWxlPVwiYm9yZGVyOiAwcHg7XCI+XG48dGQgYmdjb2xvcj1cIiNkNmZiZWRcIiBzdHlsZT1cImNvbG9yOiAjMDAwMDAwOyBib3JkZXI6IDBweDtcIj48c3Ryb25nPlRoZXkncmUgYmFjayE8L3N0cm9uZz48L3RkPlxuPC90cj5cbjwvdGJvZHk+XG48L3RhYmxlPlxuPHA+PHN0cm9uZz5UaGluayBiYWtlZCBiZWFucyBhcmUgQnJpdGlzaD8gVGhleSBhcmUgbm93ISBXZSB1c2Ugb25seSBCcml0aXNoLWdyb3duIGZhdmEgYmVhbnMgLSBCcml0YWluJ3Mgb3JpZ2luYWwgYmVhbiwgZ3Jvd24gaGVyZSBzaW5jZSB0aGUgSXJvbiBBZ2UuIE91ciBCYWtlZCBCcml0aXNoIEJlYW5zIGFyZSBkZWxpY2lvdXNseSBkaWZmZXJlbnQsIHdpdGggbGFyZ2UgbWVhdHkgZmF2YSBiZWFucyBpbiBhIHRhc3R5IHRvbWF0byBzYXVjZS48L3N0cm9uZz48L3A+XG48cD48c3Ryb25nPjxhIHRpdGxlPVwiV2hhdCBhcmUgZmF2YSBiZWFucz8gQXJlbid0IHRoZXkganVzdCBicm9hZCBiZWFucz9cIiBocmVmPVwiL2Jsb2dzL25ld3Mvd2hhdC1hcmUtZmF2YS1iZWFucy1hcmUtdGhleS1qdXN0LWJyb2FkLWJlYW5zXCIgZGF0YS1tY2UtZnJhZ21lbnQ9XCIxXCIgZGF0YS1tY2UtaHJlZj1cIi9ibG9ncy9uZXdzL3doYXQtYXJlLWZhdmEtYmVhbnMtYXJlLXRoZXktanVzdC1icm9hZC1iZWFuc1wiPldoYXQgYXJlIGZhdmEgYmVhbnM/IEZpbmQgb3V0IGhlcmUuLi48L2E+PC9zdHJvbmc+PC9wPlxuPCEtLSBzcGxpdCAtLT48aDM+Q29tcGxldGUgUHJvZHVjdCBEZXRhaWxzPC9oMz48cD5PdXIgQmFrZWQgQnJpdGlzaCBCZWFucyBhcmUgY29va2VkIGFuZCByZWFkeSB0byBlYXQsIGhvdCBvciBjb2xkLiBUaGV5J3JlIGdvb2Qgc2VydmVkIG9uIHRvYXN0IGJ1dCBhbHNvIGRlbGljaW91cyBhZGRlZCB0byBzdGV3cywgY3VycmllcyBvciBjYXNzZXJvbGVzLiBPciBldmVuIGluIGEgcGllLjwvcD5cbjxoNSBjbGFzcz1cInByb2R1Y3QtZGV0YWlsLXRpdGxlXCI+Q29va2luZyBpbnN0cnVjdGlvbnM8L2g1PlxuPHA+PHN0cm9uZz5Db29raW5nIG9uIHRoZSBIb2I8L3N0cm9uZz48YnI+RW1wdHkgY29udGVudHMgaW50byBzYXVjZXBhbi4gSGVhdCBnZW50bHkgZm9yIDQtNSBtaW51dGVzIHdoaWxlIHN0aXJyaW5nLiBGb3IgYmVzdCBmbGF2b3VyIGRvIG5vdCBib2lsIG9yIG92ZXJjb29rLiBEbyBub3QgcmVoZWF0LjwvcD5cbjxwPjxzdHJvbmc+TWljcm93YXZlIENvb2tpbmc8L3N0cm9uZz48YnI+RW1wdHkgY29udGVudHMgaW50byBhIG5vbi1tZXRhbGxpYyBib3dsIGFuZCBjb3Zlci4gSGVhdCBmb3IgMiB0byAzIG1pbnV0ZXMsIHN0aXJyaW5nIGhhbGZ3YXkuIENoZWNrIHRoZSBmb29kIGlzIGhvdCwgc3RpciB3ZWxsIGFuZCBzZXJ2ZS4gRG8gbm90IHJlaGVhdC48L3A+XG48aDUgY2xhc3M9XCJwcm9kdWN0LWRldGFpbC10aXRsZVwiPlRvIFN0b3JlPC9oNT5cbjxwPlN0b3JlIGluIGEgY29vbCwgZHJ5IHBsYWNlLiBPbmNlIG9wZW5lZCwgdHJhbnNmZXIgY29udGVudHMgdG8gYSBub24tbWV0YWxsaWMgY29udGFpbmVyLCBjb3ZlciByZWZyaWdlcmF0ZSBhbmQgdXNlIHdpdGggMiBkYXlzLjwvcD5cbjxoNSBjbGFzcz1cInByb2R1Y3QtZGV0YWlsLXRpdGxlXCI+SW5ncmVkaWVudHM8L2g1PlxuPHA+RmF2YSBCZWFucyAoQnJvYWQgQmVhbnMpICg0MiUpLCBXYXRlciwgVG9tYXRvIFB1cmVlLCBTdWdhciwgTW9kaWZpZWQgTWFpemUgU3RhcmNoLCBTYWx0LCBIZXJicyAmYW1wOyBTcGljZXMsIENvbmNlbnRyYXRlZCBMZW1vbiBKdWljZTwvcD5cbjxoNSBjbGFzcz1cInByb2R1Y3QtZGV0YWlsLXRpdGxlXCI+QWxsZXJneSBpbmZvcm1hdGlvbjwvaDU+XG48cD5ObyBBbGxlcmdlbnM8L3A+XG48dGFibGUgd2lkdGg9XCIxMDAlXCI+XG48dGJvZHk+XG48dHI+XG48dGQ+PHN0cm9uZz5UeXBpY2FsIHZhbHVlczwvc3Ryb25nPjwvdGQ+XG48dGQ+PHN0cm9uZz5QZXIgMTAwZzwvc3Ryb25nPjwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkPkVuZXJneTwvdGQ+XG48dGQ+Mjkya0ogKDY5a2NhbCk8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZD5GYXQ8L3RkPlxuPHRkPjAuNGc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZD5vZiB3aGljaCBzYXR1cmF0ZXM8L3RkPlxuPHRkPjAuMWc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZD5DYXJib2h5ZHJhdGU8L3RkPlxuPHRkPjEwLjFnPC90ZD5cbjwvdHI+XG48dHI+XG48dGQ+b2Ygd2hpY2ggc3VnYXJzPC90ZD5cbjx0ZD40LjZnPC90ZD5cbjwvdHI+XG48dHI+XG48dGQ+RmlicmU8L3RkPlxuPHRkPjVnPC90ZD5cbjwvdHI+XG48dHI+XG48dGQ+UHJvdGVpbjwvdGQ+XG48dGQ+NGc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZD5TYWx0PC90ZD5cbjx0ZD4wLjZnPC90ZD5cbjwvdHI+XG48L3Rib2R5PlxuPC90YWJsZT48aDUgY2xhc3M9XCJwcm9kdWN0LWRldGFpbC10aXRsZVwiPk1vcmU8L2g1PlxuPHA+RGVsaWNpb3VzLCBudXRyaXRpb3VzIGFuZCBnb29kIGZvciB0aGUgc29pbCwgZmF2YSBiZWFucyBhcmUgYSB2YXJpZXR5IG9mIGJyb2FkIGJlYW4sIFZpY2lhIGZhYmEsIGxlZnQgdG8gcmlwZW4gYW5kIGRyeSBiZWZvcmUgaGFydmVzdC4gVGhleeKAmXJlIGFsc28ga25vd24gYXMgZmllbGQgYmVhbnMsIGhvcnNlIGJlYW5zLCBXaW5kc29yIGJlYW5zIG9yIGZ1bC48L3A+XG48cD5TdWl0YWJsZSBmb3IgdmVnYW5zIGFuZCB2ZWdldGFyaWFuczwvcD5cbiIsImRmYy1iOmhhc1F1YW50aXR5IjoiXzpiNSIsImRmYy1iOmltYWdlIjoiaHR0cHM6Ly9jZG4uc2hvcGlmeS5jb20vcy9maWxlcy8xLzA3MzEvODQ4My83OTM5L3Byb2R1Y3RzL1BhY2stQ2FuLUJha2VkLUJlYW5zLTE4MDB4Nl85ODN4NjU2XzUxMzc1OGU2LTI2MTYtNDY4Ny1hOGIyLWJhNmRkZTg2NDkyMy5qcGc/dj0xNjc3NzYwNzc4IiwiZGZjLWI6bmFtZSI6IkJha2VkIEJyaXRpc2ggQmVhbnMgLSBDYXNlLCAxMiB4IDQwMGcgKGNhbikiLCJkZmMtYjpyZWZlcmVuY2VkQnkiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjY1MDA0MDMvQ2F0YWxvZ0l0ZW0ifSx7IkBpZCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NjUwMDQwMy9DYXRhbG9nSXRlbSIsIkB0eXBlIjoiZGZjLWI6Q2F0YWxvZ0l0ZW0iLCJkZmMtYjpvZmZlcmVkVGhyb3VnaCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NjUwMDQwMy9PZmZlciIsImRmYy1iOnNrdSI6Ik5DQkIvQ0QiLCJkZmMtYjpzdG9ja0xpbWl0YXRpb24iOiItMSJ9LHsiQGlkIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY2NTAwNDAzL09mZmVyIiwiQHR5cGUiOiJkZmMtYjpPZmZlciIsImRmYy1iOmhhc1ByaWNlIjp7IkBpZCI6Il86YjYifX0seyJAaWQiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0Njg0MDA5NDciLCJAdHlwZSI6ImRmYy1iOlN1cHBsaWVkUHJvZHVjdCIsImRmYy1iOmRlc2NyaXB0aW9uIjoiPHA+PHN0cm9uZz5UaGUgZmlyc3QgZXZlciBCcml0aXNoLWdyb3duIG9yZ2FuaWPCoGNoaWEgc2VlZHMhIDwvc3Ryb25nPjwvcD5cbjxwPjxzdHJvbmc+VGhlc2UgdmVyc2F0aWxlIGFuZCBudXRyaXRpb3VzIHNlZWRzIGFyZSBkZWxpY2lvdXMgc3ByaW5rbGVkIG9uIHNhbGFkcywgYWRkZWQgdG8gc21vb3RoaWVzIG9yIGluIGJha2luZy4gVGhleSBtYWtlIGEgZ3JlYXQgdmVnYW4gZWdnIHJlcGxhY2VtZW50IHRvby48L3N0cm9uZz48L3A+XG48cD5PcmdhbmljYWxseSBncm93biBieSBKb2huIGFuZCBBbGljZSBQYXdzZXkgaW4gU3VmZm9saywgd2l0aCBndWlkYW5jZSBmcm9tIDxhIHRpdGxlPVwiUmVhc29ucyB0byBiZSBDaGlhLWZ1bFwiIGhyZWY9XCJodHRwczovL2hvZG1lZG9kcy5jby51ay9ibG9ncy9uZXdzL2ZpcnN0LWJyaXRpc2gtY2hpYVwiPmNoaWEgcGlvbmVlcnMgUGV0ZXIgYW5kIEFuZHJldyBGYWlyczwvYT4sIHRoZXNlIGNoaWEgc2VlZHMgYXJlIHRoZSByZXN1bHQgb2YgZml2ZSB5ZWFycyBvZiBjcm9wIHRyaWFscyBhbmQgZGV2ZWxvcG1lbnRzLsKgVGhlIHRpbnkgb2lsLXJpY2ggc2VlZHMgYXJlIGhhcnZlc3RlZCBmcm9tIHRoZSA8ZW0+U2FsdmlhIGhpc3BhbmljYTwvZW0+IHBsYW50LCBhIG1lbWJlciBvZiB0aGUgbWludCBmYW1pbHkgb3JpZ2luYXRpbmcgaW4gY2VudHJhbCBBbWVyaWNhLCB3aGVyZSBjaGlhIHdhcyBhIHN0YXBsZSBmb29kIGluIEF6dGVjIGN1bHR1cmVzLCBhbG9uZ3NpZGUgYmVhbnMgYW5kIGNvcm4uPC9wPlxuPCEtLSBzcGxpdCAtLT48aDM+Q29tcGxldGUgUHJvZHVjdCBEZXRhaWxzPC9oMz5cbjxsaSBpZD1cInRhYjFcIiBjbGFzcz1cImFjdGl2ZVwiPlxuPHA+U3ByaW5rbGUgb24gc2FsYWRzLCB1c2UgaW4gYmFraW5nLCBhZGQgdG8gc21vb3RoaWVzLCBwb3JyaWRnZSBvciBncmFub2xhLjwvcD5cbjxwPkFkdmlzZWQgbWF4aW11bSBkYWlseSBpbnRha2U6IDE1ZzwvcD5cbjxoNSBjbGFzcz1cInByb2R1Y3QtZGV0YWlsLXRpdGxlXCI+Q29va2luZyBpbnN0cnVjdGlvbnM8L2g1PlxuPHA+PHN0cm9uZz5BcyBhbiBlZ2cgc3Vic3RpdHV0ZTwvc3Ryb25nPjxicj5Tb2FrIDEgdGFibGVzcG9vbiBvZiBzZWVkcyBpbiAzIHRhYmxlc3Bvb25zIG9mIHdhcm0gd2F0ZXIgZm9yIDMwIG1pbnV0ZXMgdG8gcmVwbGFjZSBvbmUgZWdnIGluIHZlZ2FuIGJha2luZy48L3A+XG48cD48c3Ryb25nPkluIGJha2luZzwvc3Ryb25nPjxicj5BZGQgd2hvbGUgb3IgZ3JvdW5kIGNoaWEgc2VlZHMgdG8gYnJlYWQgbWl4ZXMgYXQgdXAgdG8gNSU8YnI+QWRkIHdob2xlIGNoaWEgc2VlZHMgdG8gb3RoZXIgYmFraW5nIG1peGVzIGF0IHVwIHRvIDEwJTwvcD5cbjxwPjxzdHJvbmc+T3RoZXIgdXNlczwvc3Ryb25nPjxicj4gQWRkIHdob2xlIGNoaWEgc2VlZHMgdG8gYnJlYWtmYXN0IGNlcmVhbCBhdCB1cCB0byAxMCU8YnI+QWRkIHdob2xlIGNoaWEgc2VlZHMgdG8gZnJ1aXQsIG51dCwgYW5kIHNlZWQgbWl4ZXMgYXQgdXAgdG8gMTAlPGJyPkFkZCB3aG9sZSwgbWFzaGVkIG9yIGdyb3VuZCBjaGlhIHNlZWRzIHRvIGZydWl0IGp1aWNlcyBvciBzbW9vdGhpZXMgYXQgdXAgdG8gMTVnL2RheTwvcD5cbjxoNSBjbGFzcz1cInByb2R1Y3QtZGV0YWlsLXRpdGxlXCI+SW5ncmVkaWVudHM8L2g1PlxuPHA+Q2hpYcKgc2VlZHMgKDxlbT5TYWx2aWEgSGlzcGFuaWNhPC9lbT4pPC9wPlxuPGg1IGNsYXNzPVwicHJvZHVjdC1kZXRhaWwtdGl0bGVcIj5BbGxlcmd5IGluZm9ybWF0aW9uPC9oNT5cbjxwPk5vIEFsbGVyZ2VuczwvcD5cbjx0YWJsZSBoZWlnaHQ9XCIyNDdcIiB3aWR0aD1cIjQxNlwiPlxuPHRib2R5PlxuPHRyPlxuPHRkIHN0eWxlPVwid2lkdGg6IDIwMy4yOTVweDtcIj48c3Ryb25nPlR5cGljYWwgdmFsdWVzPC9zdHJvbmc+PC90ZD5cbjx0ZCBzdHlsZT1cIndpZHRoOiAxOTkuNjU5cHg7XCI+PHN0cm9uZz5QZXIgMTAwZzwvc3Ryb25nPjwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkIHN0eWxlPVwid2lkdGg6IDIwMy4yOTVweDtcIj5FbmVyZ3k8L3RkPlxuPHRkIHN0eWxlPVwid2lkdGg6IDE5OS42NTlweDtcIj4xLDY3NWtKIC8gNDA0a2NhbDwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkIHN0eWxlPVwid2lkdGg6IDIwMy4yOTVweDtcIj5GYXQ8L3RkPlxuPHRkIHN0eWxlPVwid2lkdGg6IDE5OS42NTlweDtcIj4yMy4yZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkIHN0eWxlPVwid2lkdGg6IDIwMy4yOTVweDtcIj5vZiB3aGljaCBzYXR1cmF0ZXM8L3RkPlxuPHRkIHN0eWxlPVwid2lkdGg6IDE5OS42NTlweDtcIj4yLjNnPC90ZD5cbjwvdHI+XG48dHI+XG48dGQgc3R5bGU9XCJ3aWR0aDogMjAzLjI5NXB4O1wiPkNhcmJvaHlkcmF0ZTwvdGQ+XG48dGQgc3R5bGU9XCJ3aWR0aDogMTk5LjY1OXB4O1wiPjE2LjdnPC90ZD5cbjwvdHI+XG48dHI+XG48dGQgc3R5bGU9XCJ3aWR0aDogMjAzLjI5NXB4O1wiPm9mIHdoaWNoIHN1Z2FyczwvdGQ+XG48dGQgc3R5bGU9XCJ3aWR0aDogMTk5LjY1OXB4O1wiPjAuOGc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZCBzdHlsZT1cIndpZHRoOiAyMDMuMjk1cHg7XCI+RmlicmU8L3RkPlxuPHRkIHN0eWxlPVwid2lkdGg6IDE5OS42NTlweDtcIj4yNy43ZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkIHN0eWxlPVwid2lkdGg6IDIwMy4yOTVweDtcIj5Qcm90ZWluPC90ZD5cbjx0ZCBzdHlsZT1cIndpZHRoOiAxOTkuNjU5cHg7XCI+MTguMmc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZCBzdHlsZT1cIndpZHRoOiAyMDMuMjk1cHg7XCI+U2FsdDwvdGQ+XG48dGQgc3R5bGU9XCJ3aWR0aDogMTk5LjY1OXB4O1wiPjAuMDFnPC90ZD5cbjwvdHI+XG48dHI+XG48dGQgc3R5bGU9XCJ3aWR0aDogMjAzLjI5NXB4O1wiPkNhbGNpdW08L3RkPlxuPHRkIHN0eWxlPVwid2lkdGg6IDE5OS42NTlweDtcIj43MDFtZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkIHN0eWxlPVwid2lkdGg6IDIwMy4yOTVweDtcIj5Jcm9uPC90ZD5cbjx0ZCBzdHlsZT1cIndpZHRoOiAxOTkuNjU5cHg7XCI+Ny4ybWc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZCBzdHlsZT1cIndpZHRoOiAyMDMuMjk1cHg7XCI+TWFnbmVzaXVtPC90ZD5cbjx0ZCBzdHlsZT1cIndpZHRoOiAxOTkuNjU5cHg7XCI+MjMwbWc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZCBzdHlsZT1cIndpZHRoOiAyMDMuMjk1cHg7XCI+UGhvc3Bob3JvdXM8L3RkPlxuPHRkIHN0eWxlPVwid2lkdGg6IDE5OS42NTlweDtcIj41ODNtZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkIHN0eWxlPVwid2lkdGg6IDIwMy4yOTVweDtcIj5PbWVnYSAzIEFMQTwvdGQ+XG48dGQgc3R5bGU9XCJ3aWR0aDogMTk5LjY1OXB4O1wiPjExLjVnPC90ZD5cbjwvdHI+XG48L3Rib2R5PlxuPC90YWJsZT5cbjxoNSBjbGFzcz1cInByb2R1Y3QtZGV0YWlsLXRpdGxlXCI+TW9yZTwvaDU+XG48cD5DaGlhwqBTZWVkcyBhcmUgaGlnaCBpbiBkaWV0YXJ5IGZpYnJlIGFuZMKgT21lZ2EgMyBBTEEgb2lscywgYW5kIGEgc291cmNlIG9mIHByb3RlaW4uPC9wPlxuPHA+U3VpdGFibGUgZm9yIFZlZ2FucyAmYW1wOyBWZWdldGFyaWFucy48L3A+XG48cD5Hcm93biBieSBKb2huIGFuZCBBbGljZSBQYXdzZXkgaW4gU3VmZm9say48L3A+XG48L2xpPiIsImRmYy1iOmhhc1F1YW50aXR5IjoiXzpiMyIsImRmYy1iOmltYWdlIjoiaHR0cHM6Ly9jZG4uc2hvcGlmeS5jb20vcy9maWxlcy8xLzA3MzEvODQ4My83OTM5L3Byb2R1Y3RzL09yZ2FuaWMtQ2hpYS0yNDAweDE4MDBfM2Y5YjI5YzYtZjFmZS00ODk5LTk1N2YtMDM4YmU5NzZkYTY4LmpwZz92PTE2Nzc3NjA4MTYiLCJkZmMtYjpuYW1lIjoiQ2hpYSBTZWVkLCBPcmdhbmljIC0gUmV0YWlsIHBhY2ssIDMwMGciLCJkZmMtYjpyZWZlcmVuY2VkQnkiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0Njg0MDA5NDcvQ2F0YWxvZ0l0ZW0ifSx7IkBpZCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2ODQwMDk0Ny9Bc1BsYW5uZWRDb25zdW1wdGlvbkZsb3ciLCJAdHlwZSI6ImRmYy1iOkFzUGxhbm5lZENvbnN1bXB0aW9uRmxvdyIsImRmYy1iOmNvbnN1bWVzIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY4NDAwOTQ3IiwiZGZjLWI6aGFzUXVhbnRpdHkiOiJfOmIxMSJ9LHsiQGlkIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY4NDAwOTQ3L0FzUGxhbm5lZFByb2R1Y3Rpb25GbG93IiwiQHR5cGUiOiJkZmMtYjpBc1BsYW5uZWRQcm9kdWN0aW9uRmxvdyIsImRmYy1iOmhhc1F1YW50aXR5IjoiXzpiMTIiLCJkZmMtYjpwcm9kdWNlcyI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2ODQzMzcxNSJ9LHsiQGlkIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY4NDAwOTQ3L0FzUGxhbm5lZFRyYW5zZm9ybWF0aW9uIiwiQHR5cGUiOiJkZmMtYjpBc1BsYW5uZWRUcmFuc2Zvcm1hdGlvbiIsImRmYy1iOmhhc0luY29tZSI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2ODQwMDk0Ny9Bc1BsYW5uZWRDb25zdW1wdGlvbkZsb3ciLCJkZmMtYjpoYXNPdXRjb21lIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY4NDAwOTQ3L0FzUGxhbm5lZFByb2R1Y3Rpb25GbG93In0seyJAaWQiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0Njg0MDA5NDcvQ2F0YWxvZ0l0ZW0iLCJAdHlwZSI6ImRmYy1iOkNhdGFsb2dJdGVtIiwiZGZjLWI6b2ZmZXJlZFRocm91Z2giOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0Njg0MDA5NDcvT2ZmZXIiLCJkZmMtYjpza3UiOiJPR0NIL1IzIiwiZGZjLWI6c3RvY2tMaW1pdGF0aW9uIjoiLTEifSx7IkBpZCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2ODQwMDk0Ny9PZmZlciIsIkB0eXBlIjoiZGZjLWI6T2ZmZXIiLCJkZmMtYjpoYXNQcmljZSI6eyJAaWQiOiJfOmI0In19LHsiQGlkIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY4NDMzNzE1IiwiQHR5cGUiOiJkZmMtYjpTdXBwbGllZFByb2R1Y3QiLCJkZmMtYjpkZXNjcmlwdGlvbiI6IjxwPjxzdHJvbmc+VGhlIGZpcnN0IGV2ZXIgQnJpdGlzaC1ncm93biBvcmdhbmljwqBjaGlhIHNlZWRzISA8L3N0cm9uZz48L3A+XG48cD48c3Ryb25nPlRoZXNlIHZlcnNhdGlsZSBhbmQgbnV0cml0aW91cyBzZWVkcyBhcmUgZGVsaWNpb3VzIHNwcmlua2xlZCBvbiBzYWxhZHMsIGFkZGVkIHRvIHNtb290aGllcyBvciBpbiBiYWtpbmcuIFRoZXkgbWFrZSBhIGdyZWF0IHZlZ2FuIGVnZyByZXBsYWNlbWVudCB0b28uPC9zdHJvbmc+PC9wPlxuPHA+T3JnYW5pY2FsbHkgZ3Jvd24gYnkgSm9obiBhbmQgQWxpY2UgUGF3c2V5IGluIFN1ZmZvbGssIHdpdGggZ3VpZGFuY2UgZnJvbSA8YSB0aXRsZT1cIlJlYXNvbnMgdG8gYmUgQ2hpYS1mdWxcIiBocmVmPVwiaHR0cHM6Ly9ob2RtZWRvZHMuY28udWsvYmxvZ3MvbmV3cy9maXJzdC1icml0aXNoLWNoaWFcIj5jaGlhIHBpb25lZXJzIFBldGVyIGFuZCBBbmRyZXcgRmFpcnM8L2E+LCB0aGVzZSBjaGlhIHNlZWRzIGFyZSB0aGUgcmVzdWx0IG9mIGZpdmUgeWVhcnMgb2YgY3JvcCB0cmlhbHMgYW5kIGRldmVsb3BtZW50cy7CoFRoZSB0aW55IG9pbC1yaWNoIHNlZWRzIGFyZSBoYXJ2ZXN0ZWQgZnJvbSB0aGUgPGVtPlNhbHZpYSBoaXNwYW5pY2E8L2VtPiBwbGFudCwgYSBtZW1iZXIgb2YgdGhlIG1pbnQgZmFtaWx5IG9yaWdpbmF0aW5nIGluIGNlbnRyYWwgQW1lcmljYSwgd2hlcmUgY2hpYSB3YXMgYSBzdGFwbGUgZm9vZCBpbiBBenRlYyBjdWx0dXJlcywgYWxvbmdzaWRlIGJlYW5zIGFuZCBjb3JuLjwvcD5cbjwhLS0gc3BsaXQgLS0+PGgzPkNvbXBsZXRlIFByb2R1Y3QgRGV0YWlsczwvaDM+XG48bGkgaWQ9XCJ0YWIxXCIgY2xhc3M9XCJhY3RpdmVcIj5cbjxwPlNwcmlua2xlIG9uIHNhbGFkcywgdXNlIGluIGJha2luZywgYWRkIHRvIHNtb290aGllcywgcG9ycmlkZ2Ugb3IgZ3Jhbm9sYS48L3A+XG48cD5BZHZpc2VkIG1heGltdW0gZGFpbHkgaW50YWtlOiAxNWc8L3A+XG48aDUgY2xhc3M9XCJwcm9kdWN0LWRldGFpbC10aXRsZVwiPkNvb2tpbmcgaW5zdHJ1Y3Rpb25zPC9oNT5cbjxwPjxzdHJvbmc+QXMgYW4gZWdnIHN1YnN0aXR1dGU8L3N0cm9uZz48YnI+U29hayAxIHRhYmxlc3Bvb24gb2Ygc2VlZHMgaW4gMyB0YWJsZXNwb29ucyBvZiB3YXJtIHdhdGVyIGZvciAzMCBtaW51dGVzIHRvIHJlcGxhY2Ugb25lIGVnZyBpbiB2ZWdhbiBiYWtpbmcuPC9wPlxuPHA+PHN0cm9uZz5JbiBiYWtpbmc8L3N0cm9uZz48YnI+QWRkIHdob2xlIG9yIGdyb3VuZCBjaGlhIHNlZWRzIHRvIGJyZWFkIG1peGVzIGF0IHVwIHRvIDUlPGJyPkFkZCB3aG9sZSBjaGlhIHNlZWRzIHRvIG90aGVyIGJha2luZyBtaXhlcyBhdCB1cCB0byAxMCU8L3A+XG48cD48c3Ryb25nPk90aGVyIHVzZXM8L3N0cm9uZz48YnI+IEFkZCB3aG9sZSBjaGlhIHNlZWRzIHRvIGJyZWFrZmFzdCBjZXJlYWwgYXQgdXAgdG8gMTAlPGJyPkFkZCB3aG9sZSBjaGlhIHNlZWRzIHRvIGZydWl0LCBudXQsIGFuZCBzZWVkIG1peGVzIGF0IHVwIHRvIDEwJTxicj5BZGQgd2hvbGUsIG1hc2hlZCBvciBncm91bmQgY2hpYSBzZWVkcyB0byBmcnVpdCBqdWljZXMgb3Igc21vb3RoaWVzIGF0IHVwIHRvIDE1Zy9kYXk8L3A+XG48aDUgY2xhc3M9XCJwcm9kdWN0LWRldGFpbC10aXRsZVwiPkluZ3JlZGllbnRzPC9oNT5cbjxwPkNoaWHCoHNlZWRzICg8ZW0+U2FsdmlhIEhpc3BhbmljYTwvZW0+KTwvcD5cbjxoNSBjbGFzcz1cInByb2R1Y3QtZGV0YWlsLXRpdGxlXCI+QWxsZXJneSBpbmZvcm1hdGlvbjwvaDU+XG48cD5ObyBBbGxlcmdlbnM8L3A+XG48dGFibGUgaGVpZ2h0PVwiMjQ3XCIgd2lkdGg9XCI0MTZcIj5cbjx0Ym9keT5cbjx0cj5cbjx0ZCBzdHlsZT1cIndpZHRoOiAyMDMuMjk1cHg7XCI+PHN0cm9uZz5UeXBpY2FsIHZhbHVlczwvc3Ryb25nPjwvdGQ+XG48dGQgc3R5bGU9XCJ3aWR0aDogMTk5LjY1OXB4O1wiPjxzdHJvbmc+UGVyIDEwMGc8L3N0cm9uZz48L3RkPlxuPC90cj5cbjx0cj5cbjx0ZCBzdHlsZT1cIndpZHRoOiAyMDMuMjk1cHg7XCI+RW5lcmd5PC90ZD5cbjx0ZCBzdHlsZT1cIndpZHRoOiAxOTkuNjU5cHg7XCI+MSw2NzVrSiAvIDQwNGtjYWw8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZCBzdHlsZT1cIndpZHRoOiAyMDMuMjk1cHg7XCI+RmF0PC90ZD5cbjx0ZCBzdHlsZT1cIndpZHRoOiAxOTkuNjU5cHg7XCI+MjMuMmc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZCBzdHlsZT1cIndpZHRoOiAyMDMuMjk1cHg7XCI+b2Ygd2hpY2ggc2F0dXJhdGVzPC90ZD5cbjx0ZCBzdHlsZT1cIndpZHRoOiAxOTkuNjU5cHg7XCI+Mi4zZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkIHN0eWxlPVwid2lkdGg6IDIwMy4yOTVweDtcIj5DYXJib2h5ZHJhdGU8L3RkPlxuPHRkIHN0eWxlPVwid2lkdGg6IDE5OS42NTlweDtcIj4xNi43ZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkIHN0eWxlPVwid2lkdGg6IDIwMy4yOTVweDtcIj5vZiB3aGljaCBzdWdhcnM8L3RkPlxuPHRkIHN0eWxlPVwid2lkdGg6IDE5OS42NTlweDtcIj4wLjhnPC90ZD5cbjwvdHI+XG48dHI+XG48dGQgc3R5bGU9XCJ3aWR0aDogMjAzLjI5NXB4O1wiPkZpYnJlPC90ZD5cbjx0ZCBzdHlsZT1cIndpZHRoOiAxOTkuNjU5cHg7XCI+MjcuN2c8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZCBzdHlsZT1cIndpZHRoOiAyMDMuMjk1cHg7XCI+UHJvdGVpbjwvdGQ+XG48dGQgc3R5bGU9XCJ3aWR0aDogMTk5LjY1OXB4O1wiPjE4LjJnPC90ZD5cbjwvdHI+XG48dHI+XG48dGQgc3R5bGU9XCJ3aWR0aDogMjAzLjI5NXB4O1wiPlNhbHQ8L3RkPlxuPHRkIHN0eWxlPVwid2lkdGg6IDE5OS42NTlweDtcIj4wLjAxZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkIHN0eWxlPVwid2lkdGg6IDIwMy4yOTVweDtcIj5DYWxjaXVtPC90ZD5cbjx0ZCBzdHlsZT1cIndpZHRoOiAxOTkuNjU5cHg7XCI+NzAxbWc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZCBzdHlsZT1cIndpZHRoOiAyMDMuMjk1cHg7XCI+SXJvbjwvdGQ+XG48dGQgc3R5bGU9XCJ3aWR0aDogMTk5LjY1OXB4O1wiPjcuMm1nPC90ZD5cbjwvdHI+XG48dHI+XG48dGQgc3R5bGU9XCJ3aWR0aDogMjAzLjI5NXB4O1wiPk1hZ25lc2l1bTwvdGQ+XG48dGQgc3R5bGU9XCJ3aWR0aDogMTk5LjY1OXB4O1wiPjIzMG1nPC90ZD5cbjwvdHI+XG48dHI+XG48dGQgc3R5bGU9XCJ3aWR0aDogMjAzLjI5NXB4O1wiPlBob3NwaG9yb3VzPC90ZD5cbjx0ZCBzdHlsZT1cIndpZHRoOiAxOTkuNjU5cHg7XCI+NTgzbWc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZCBzdHlsZT1cIndpZHRoOiAyMDMuMjk1cHg7XCI+T21lZ2EgMyBBTEE8L3RkPlxuPHRkIHN0eWxlPVwid2lkdGg6IDE5OS42NTlweDtcIj4xMS41ZzwvdGQ+XG48L3RyPlxuPC90Ym9keT5cbjwvdGFibGU+XG48aDUgY2xhc3M9XCJwcm9kdWN0LWRldGFpbC10aXRsZVwiPk1vcmU8L2g1PlxuPHA+Q2hpYcKgU2VlZHMgYXJlIGhpZ2ggaW4gZGlldGFyeSBmaWJyZSBhbmTCoE9tZWdhIDMgQUxBIG9pbHMsIGFuZCBhIHNvdXJjZSBvZiBwcm90ZWluLjwvcD5cbjxwPlN1aXRhYmxlIGZvciBWZWdhbnMgJmFtcDsgVmVnZXRhcmlhbnMuPC9wPlxuPHA+R3Jvd24gYnkgSm9obiBhbmQgQWxpY2UgUGF3c2V5IGluIFN1ZmZvbGsuPC9wPlxuPC9saT4iLCJkZmMtYjpoYXNRdWFudGl0eSI6Il86YjciLCJkZmMtYjppbWFnZSI6Imh0dHBzOi8vY2RuLnNob3BpZnkuY29tL3MvZmlsZXMvMS8wNzMxLzg0ODMvNzkzOS9wcm9kdWN0cy9PcmdhbmljLUNoaWEtMjQwMHgxODAwXzNmOWIyOWM2LWYxZmUtNDg5OS05NTdmLTAzOGJlOTc2ZGE2OC5qcGc/dj0xNjc3NzYwODE2IiwiZGZjLWI6bmFtZSI6IkNoaWEgU2VlZCwgT3JnYW5pYyAtIENhc2UsIDggeCAzMDBnIiwiZGZjLWI6cmVmZXJlbmNlZEJ5IjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY4NDMzNzE1L0NhdGFsb2dJdGVtIn0seyJAaWQiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0Njg0MzM3MTUvQ2F0YWxvZ0l0ZW0iLCJAdHlwZSI6ImRmYy1iOkNhdGFsb2dJdGVtIiwiZGZjLWI6b2ZmZXJlZFRocm91Z2giOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0Njg0MzM3MTUvT2ZmZXIiLCJkZmMtYjpza3UiOiJPR0NIL0M4IiwiZGZjLWI6c3RvY2tMaW1pdGF0aW9uIjoiLTEifSx7IkBpZCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2ODQzMzcxNS9PZmZlciIsIkB0eXBlIjoiZGZjLWI6T2ZmZXIiLCJkZmMtYjpoYXNQcmljZSI6eyJAaWQiOiJfOmI4In19XX0= - recorded_at: Fri, 06 Sep 2024 00:45:52 GMT + eyJAY29udGV4dCI6Imh0dHBzOi8vd3d3LmRhdGFmb29kY29uc29ydGl1bS5vcmciLCJAZ3JhcGgiOlt7IkBpZCI6Il86YjI1NyIsIkB0eXBlIjoiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWUiLCJkZmMtYjpoYXNVbml0IjoiZGZjLW06S2lsb2dyYW0iLCJkZmMtYjp2YWx1ZSI6IjAuNCJ9LHsiQGlkIjoiXzpiMjU4IiwiQHR5cGUiOiJkZmMtYjpQcmljZSIsImRmYy1iOlZBVHJhdGUiOiIwIiwiZGZjLWI6aGFzVW5pdCI6ImRmYy1tOkV1cm8iLCJkZmMtYjp2YWx1ZSI6IjIuMDkifSx7IkBpZCI6Il86YjI1OSIsIkB0eXBlIjoiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWUiLCJkZmMtYjpoYXNVbml0IjoiZGZjLW06S2lsb2dyYW0iLCJkZmMtYjp2YWx1ZSI6IjAuMyJ9LHsiQGlkIjoiXzpiMjYwIiwiQHR5cGUiOiJkZmMtYjpQcmljZSIsImRmYy1iOlZBVHJhdGUiOiIwIiwiZGZjLWI6aGFzVW5pdCI6ImRmYy1tOkV1cm8iLCJkZmMtYjp2YWx1ZSI6IjMuOTkifSx7IkBpZCI6Il86YjI2MSIsIkB0eXBlIjoiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWUiLCJkZmMtYjpoYXNVbml0IjoiZGZjLW06S2lsb2dyYW0iLCJkZmMtYjp2YWx1ZSI6IjQuOCJ9LHsiQGlkIjoiXzpiMjYyIiwiQHR5cGUiOiJkZmMtYjpQcmljZSIsImRmYy1iOlZBVHJhdGUiOiIwIiwiZGZjLWI6aGFzVW5pdCI6ImRmYy1tOkV1cm8iLCJkZmMtYjp2YWx1ZSI6IjE4Ljg1In0seyJAaWQiOiJfOmIyNjMiLCJAdHlwZSI6ImRmYy1iOlF1YW50aXRhdGl2ZVZhbHVlIiwiZGZjLWI6aGFzVW5pdCI6ImRmYy1tOktpbG9ncmFtIiwiZGZjLWI6dmFsdWUiOiIyLjQifSx7IkBpZCI6Il86YjI2NCIsIkB0eXBlIjoiZGZjLWI6UHJpY2UiLCJkZmMtYjpWQVRyYXRlIjoiMCIsImRmYy1iOmhhc1VuaXQiOiJkZmMtbTpFdXJvIiwiZGZjLWI6dmFsdWUiOiIyMy45NSJ9LHsiQGlkIjoiXzpiMjY1IiwiQHR5cGUiOiJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZSIsImRmYy1iOmhhc1VuaXQiOiJkZmMtbTpQaWVjZSIsImRmYy1iOnZhbHVlIjoiMTIifSx7IkBpZCI6Il86YjI2NiIsIkB0eXBlIjoiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWUiLCJkZmMtYjpoYXNVbml0IjoiZGZjLW06UGllY2UiLCJkZmMtYjp2YWx1ZSI6IjEifSx7IkBpZCI6Il86YjI2NyIsIkB0eXBlIjoiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWUiLCJkZmMtYjpoYXNVbml0IjoiZGZjLW06UGllY2UiLCJkZmMtYjp2YWx1ZSI6IjgifSx7IkBpZCI6Il86YjI2OCIsIkB0eXBlIjoiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWUiLCJkZmMtYjpoYXNVbml0IjoiZGZjLW06UGllY2UiLCJkZmMtYjp2YWx1ZSI6IjEifSx7IkBpZCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NjQ2NzYzNSIsIkB0eXBlIjoiZGZjLWI6U3VwcGxpZWRQcm9kdWN0IiwiZGZjLWI6ZGVzY3JpcHRpb24iOiI8dGFibGUgd2lkdGg9XCIxMDAlXCI+XG48dGJvZHk+XG48dHIgc3R5bGU9XCJib3JkZXI6IDBweDtcIj5cbjx0ZCBiZ2NvbG9yPVwiI2Q2ZmJlZFwiIHN0eWxlPVwiY29sb3I6ICMwMDAwMDA7IGJvcmRlcjogMHB4O1wiPjxzdHJvbmc+VGhleSdyZSBiYWNrITwvc3Ryb25nPjwvdGQ+XG48L3RyPlxuPC90Ym9keT5cbjwvdGFibGU+XG48cD48c3Ryb25nPlRoaW5rIGJha2VkIGJlYW5zIGFyZSBCcml0aXNoPyBUaGV5IGFyZSBub3chIFdlIHVzZSBvbmx5IEJyaXRpc2gtZ3Jvd24gZmF2YSBiZWFucyAtIEJyaXRhaW4ncyBvcmlnaW5hbCBiZWFuLCBncm93biBoZXJlIHNpbmNlIHRoZSBJcm9uIEFnZS4gT3VyIEJha2VkIEJyaXRpc2ggQmVhbnMgYXJlIGRlbGljaW91c2x5IGRpZmZlcmVudCwgd2l0aCBsYXJnZSBtZWF0eSBmYXZhIGJlYW5zIGluIGEgdGFzdHkgdG9tYXRvIHNhdWNlLjwvc3Ryb25nPjwvcD5cbjxwPjxzdHJvbmc+PGEgdGl0bGU9XCJXaGF0IGFyZSBmYXZhIGJlYW5zPyBBcmVuJ3QgdGhleSBqdXN0IGJyb2FkIGJlYW5zP1wiIGhyZWY9XCIvYmxvZ3MvbmV3cy93aGF0LWFyZS1mYXZhLWJlYW5zLWFyZS10aGV5LWp1c3QtYnJvYWQtYmVhbnNcIiBkYXRhLW1jZS1mcmFnbWVudD1cIjFcIiBkYXRhLW1jZS1ocmVmPVwiL2Jsb2dzL25ld3Mvd2hhdC1hcmUtZmF2YS1iZWFucy1hcmUtdGhleS1qdXN0LWJyb2FkLWJlYW5zXCI+V2hhdCBhcmUgZmF2YSBiZWFucz8gRmluZCBvdXQgaGVyZS4uLjwvYT48L3N0cm9uZz48L3A+XG48IS0tIHNwbGl0IC0tPjxoMz5Db21wbGV0ZSBQcm9kdWN0IERldGFpbHM8L2gzPjxwPk91ciBCYWtlZCBCcml0aXNoIEJlYW5zIGFyZSBjb29rZWQgYW5kIHJlYWR5IHRvIGVhdCwgaG90IG9yIGNvbGQuIFRoZXkncmUgZ29vZCBzZXJ2ZWQgb24gdG9hc3QgYnV0IGFsc28gZGVsaWNpb3VzIGFkZGVkIHRvIHN0ZXdzLCBjdXJyaWVzIG9yIGNhc3Nlcm9sZXMuIE9yIGV2ZW4gaW4gYSBwaWUuPC9wPlxuPGg1IGNsYXNzPVwicHJvZHVjdC1kZXRhaWwtdGl0bGVcIj5Db29raW5nIGluc3RydWN0aW9uczwvaDU+XG48cD48c3Ryb25nPkNvb2tpbmcgb24gdGhlIEhvYjwvc3Ryb25nPjxicj5FbXB0eSBjb250ZW50cyBpbnRvIHNhdWNlcGFuLiBIZWF0IGdlbnRseSBmb3IgNC01IG1pbnV0ZXMgd2hpbGUgc3RpcnJpbmcuIEZvciBiZXN0IGZsYXZvdXIgZG8gbm90IGJvaWwgb3Igb3ZlcmNvb2suIERvIG5vdCByZWhlYXQuPC9wPlxuPHA+PHN0cm9uZz5NaWNyb3dhdmUgQ29va2luZzwvc3Ryb25nPjxicj5FbXB0eSBjb250ZW50cyBpbnRvIGEgbm9uLW1ldGFsbGljIGJvd2wgYW5kIGNvdmVyLiBIZWF0IGZvciAyIHRvIDMgbWludXRlcywgc3RpcnJpbmcgaGFsZndheS4gQ2hlY2sgdGhlIGZvb2QgaXMgaG90LCBzdGlyIHdlbGwgYW5kIHNlcnZlLiBEbyBub3QgcmVoZWF0LjwvcD5cbjxoNSBjbGFzcz1cInByb2R1Y3QtZGV0YWlsLXRpdGxlXCI+VG8gU3RvcmU8L2g1PlxuPHA+U3RvcmUgaW4gYSBjb29sLCBkcnkgcGxhY2UuIE9uY2Ugb3BlbmVkLCB0cmFuc2ZlciBjb250ZW50cyB0byBhIG5vbi1tZXRhbGxpYyBjb250YWluZXIsIGNvdmVyIHJlZnJpZ2VyYXRlIGFuZCB1c2Ugd2l0aCAyIGRheXMuPC9wPlxuPGg1IGNsYXNzPVwicHJvZHVjdC1kZXRhaWwtdGl0bGVcIj5JbmdyZWRpZW50czwvaDU+XG48cD5GYXZhIEJlYW5zIChCcm9hZCBCZWFucykgKDQyJSksIFdhdGVyLCBUb21hdG8gUHVyZWUsIFN1Z2FyLCBNb2RpZmllZCBNYWl6ZSBTdGFyY2gsIFNhbHQsIEhlcmJzICZhbXA7IFNwaWNlcywgQ29uY2VudHJhdGVkIExlbW9uIEp1aWNlPC9wPlxuPGg1IGNsYXNzPVwicHJvZHVjdC1kZXRhaWwtdGl0bGVcIj5BbGxlcmd5IGluZm9ybWF0aW9uPC9oNT5cbjxwPk5vIEFsbGVyZ2VuczwvcD5cbjx0YWJsZSB3aWR0aD1cIjEwMCVcIj5cbjx0Ym9keT5cbjx0cj5cbjx0ZD48c3Ryb25nPlR5cGljYWwgdmFsdWVzPC9zdHJvbmc+PC90ZD5cbjx0ZD48c3Ryb25nPlBlciAxMDBnPC9zdHJvbmc+PC90ZD5cbjwvdHI+XG48dHI+XG48dGQ+RW5lcmd5PC90ZD5cbjx0ZD4yOTJrSiAoNjlrY2FsKTwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkPkZhdDwvdGQ+XG48dGQ+MC40ZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkPm9mIHdoaWNoIHNhdHVyYXRlczwvdGQ+XG48dGQ+MC4xZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkPkNhcmJvaHlkcmF0ZTwvdGQ+XG48dGQ+MTAuMWc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZD5vZiB3aGljaCBzdWdhcnM8L3RkPlxuPHRkPjQuNmc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZD5GaWJyZTwvdGQ+XG48dGQ+NWc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZD5Qcm90ZWluPC90ZD5cbjx0ZD40ZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkPlNhbHQ8L3RkPlxuPHRkPjAuNmc8L3RkPlxuPC90cj5cbjwvdGJvZHk+XG48L3RhYmxlPjxoNSBjbGFzcz1cInByb2R1Y3QtZGV0YWlsLXRpdGxlXCI+TW9yZTwvaDU+XG48cD5EZWxpY2lvdXMsIG51dHJpdGlvdXMgYW5kIGdvb2QgZm9yIHRoZSBzb2lsLCBmYXZhIGJlYW5zIGFyZSBhIHZhcmlldHkgb2YgYnJvYWQgYmVhbiwgVmljaWEgZmFiYSwgbGVmdCB0byByaXBlbiBhbmQgZHJ5IGJlZm9yZSBoYXJ2ZXN0LiBUaGV54oCZcmUgYWxzbyBrbm93biBhcyBmaWVsZCBiZWFucywgaG9yc2UgYmVhbnMsIFdpbmRzb3IgYmVhbnMgb3IgZnVsLjwvcD5cbjxwPlN1aXRhYmxlIGZvciB2ZWdhbnMgYW5kIHZlZ2V0YXJpYW5zPC9wPlxuIiwiZGZjLWI6aGFzUXVhbnRpdHkiOiJfOmIyNTciLCJkZmMtYjppbWFnZSI6Imh0dHBzOi8vY2RuLnNob3BpZnkuY29tL3MvZmlsZXMvMS8wNzMxLzg0ODMvNzkzOS9wcm9kdWN0cy9QYWNrLUNhbi1CYWtlZC1CZWFucy0xODAweDZfOTgzeDY1Nl81MTM3NThlNi0yNjE2LTQ2ODctYThiMi1iYTZkZGU4NjQ5MjMuanBnP3Y9MTY3Nzc2MDc3OCIsImRmYy1iOm5hbWUiOiJCYWtlZCBCcml0aXNoIEJlYW5zIC0gUmV0YWlsIGNhbiwgNDAwZyAoY2FuKSIsImRmYy1iOnJlZmVyZW5jZWRCeSI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NjQ2NzYzNS9DYXRhbG9nSXRlbSJ9LHsiQGlkIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY2NDY3NjM1L0FzUGxhbm5lZENvbnN1bXB0aW9uRmxvdyIsIkB0eXBlIjoiZGZjLWI6QXNQbGFubmVkQ29uc3VtcHRpb25GbG93IiwiZGZjLWI6Y29uc3VtZXMiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjY0Njc2MzUiLCJkZmMtYjpoYXNRdWFudGl0eSI6Il86YjI2NSJ9LHsiQGlkIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY2NDY3NjM1L0FzUGxhbm5lZFByb2R1Y3Rpb25GbG93IiwiQHR5cGUiOiJkZmMtYjpBc1BsYW5uZWRQcm9kdWN0aW9uRmxvdyIsImRmYy1iOmhhc1F1YW50aXR5IjoiXzpiMjY2IiwiZGZjLWI6cHJvZHVjZXMiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjY1MDA0MDMifSx7IkBpZCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NjQ2NzYzNS9Bc1BsYW5uZWRUcmFuc2Zvcm1hdGlvbiIsIkB0eXBlIjoiZGZjLWI6QXNQbGFubmVkVHJhbnNmb3JtYXRpb24iLCJkZmMtYjpoYXNJbmNvbWUiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjY0Njc2MzUvQXNQbGFubmVkQ29uc3VtcHRpb25GbG93IiwiZGZjLWI6aGFzT3V0Y29tZSI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NjQ2NzYzNS9Bc1BsYW5uZWRQcm9kdWN0aW9uRmxvdyJ9LHsiQGlkIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY2NDY3NjM1L0NhdGFsb2dJdGVtIiwiQHR5cGUiOiJkZmMtYjpDYXRhbG9nSXRlbSIsImRmYy1iOm9mZmVyZWRUaHJvdWdoIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY2NDY3NjM1L09mZmVyIiwiZGZjLWI6c2t1IjoiTkNCQi9UNCIsImRmYy1iOnN0b2NrTGltaXRhdGlvbiI6Ii0xIn0seyJAaWQiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjY0Njc2MzUvT2ZmZXIiLCJAdHlwZSI6ImRmYy1iOk9mZmVyIiwiZGZjLWI6aGFzUHJpY2UiOnsiQGlkIjoiXzpiMjU4In19LHsiQGlkIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY2NTAwNDAzIiwiQHR5cGUiOiJkZmMtYjpTdXBwbGllZFByb2R1Y3QiLCJkZmMtYjpkZXNjcmlwdGlvbiI6Ijx0YWJsZSB3aWR0aD1cIjEwMCVcIj5cbjx0Ym9keT5cbjx0ciBzdHlsZT1cImJvcmRlcjogMHB4O1wiPlxuPHRkIGJnY29sb3I9XCIjZDZmYmVkXCIgc3R5bGU9XCJjb2xvcjogIzAwMDAwMDsgYm9yZGVyOiAwcHg7XCI+PHN0cm9uZz5UaGV5J3JlIGJhY2shPC9zdHJvbmc+PC90ZD5cbjwvdHI+XG48L3Rib2R5PlxuPC90YWJsZT5cbjxwPjxzdHJvbmc+VGhpbmsgYmFrZWQgYmVhbnMgYXJlIEJyaXRpc2g/IFRoZXkgYXJlIG5vdyEgV2UgdXNlIG9ubHkgQnJpdGlzaC1ncm93biBmYXZhIGJlYW5zIC0gQnJpdGFpbidzIG9yaWdpbmFsIGJlYW4sIGdyb3duIGhlcmUgc2luY2UgdGhlIElyb24gQWdlLiBPdXIgQmFrZWQgQnJpdGlzaCBCZWFucyBhcmUgZGVsaWNpb3VzbHkgZGlmZmVyZW50LCB3aXRoIGxhcmdlIG1lYXR5IGZhdmEgYmVhbnMgaW4gYSB0YXN0eSB0b21hdG8gc2F1Y2UuPC9zdHJvbmc+PC9wPlxuPHA+PHN0cm9uZz48YSB0aXRsZT1cIldoYXQgYXJlIGZhdmEgYmVhbnM/IEFyZW4ndCB0aGV5IGp1c3QgYnJvYWQgYmVhbnM/XCIgaHJlZj1cIi9ibG9ncy9uZXdzL3doYXQtYXJlLWZhdmEtYmVhbnMtYXJlLXRoZXktanVzdC1icm9hZC1iZWFuc1wiIGRhdGEtbWNlLWZyYWdtZW50PVwiMVwiIGRhdGEtbWNlLWhyZWY9XCIvYmxvZ3MvbmV3cy93aGF0LWFyZS1mYXZhLWJlYW5zLWFyZS10aGV5LWp1c3QtYnJvYWQtYmVhbnNcIj5XaGF0IGFyZSBmYXZhIGJlYW5zPyBGaW5kIG91dCBoZXJlLi4uPC9hPjwvc3Ryb25nPjwvcD5cbjwhLS0gc3BsaXQgLS0+PGgzPkNvbXBsZXRlIFByb2R1Y3QgRGV0YWlsczwvaDM+PHA+T3VyIEJha2VkIEJyaXRpc2ggQmVhbnMgYXJlIGNvb2tlZCBhbmQgcmVhZHkgdG8gZWF0LCBob3Qgb3IgY29sZC4gVGhleSdyZSBnb29kIHNlcnZlZCBvbiB0b2FzdCBidXQgYWxzbyBkZWxpY2lvdXMgYWRkZWQgdG8gc3Rld3MsIGN1cnJpZXMgb3IgY2Fzc2Vyb2xlcy4gT3IgZXZlbiBpbiBhIHBpZS48L3A+XG48aDUgY2xhc3M9XCJwcm9kdWN0LWRldGFpbC10aXRsZVwiPkNvb2tpbmcgaW5zdHJ1Y3Rpb25zPC9oNT5cbjxwPjxzdHJvbmc+Q29va2luZyBvbiB0aGUgSG9iPC9zdHJvbmc+PGJyPkVtcHR5IGNvbnRlbnRzIGludG8gc2F1Y2VwYW4uIEhlYXQgZ2VudGx5IGZvciA0LTUgbWludXRlcyB3aGlsZSBzdGlycmluZy4gRm9yIGJlc3QgZmxhdm91ciBkbyBub3QgYm9pbCBvciBvdmVyY29vay4gRG8gbm90IHJlaGVhdC48L3A+XG48cD48c3Ryb25nPk1pY3Jvd2F2ZSBDb29raW5nPC9zdHJvbmc+PGJyPkVtcHR5IGNvbnRlbnRzIGludG8gYSBub24tbWV0YWxsaWMgYm93bCBhbmQgY292ZXIuIEhlYXQgZm9yIDIgdG8gMyBtaW51dGVzLCBzdGlycmluZyBoYWxmd2F5LiBDaGVjayB0aGUgZm9vZCBpcyBob3QsIHN0aXIgd2VsbCBhbmQgc2VydmUuIERvIG5vdCByZWhlYXQuPC9wPlxuPGg1IGNsYXNzPVwicHJvZHVjdC1kZXRhaWwtdGl0bGVcIj5UbyBTdG9yZTwvaDU+XG48cD5TdG9yZSBpbiBhIGNvb2wsIGRyeSBwbGFjZS4gT25jZSBvcGVuZWQsIHRyYW5zZmVyIGNvbnRlbnRzIHRvIGEgbm9uLW1ldGFsbGljIGNvbnRhaW5lciwgY292ZXIgcmVmcmlnZXJhdGUgYW5kIHVzZSB3aXRoIDIgZGF5cy48L3A+XG48aDUgY2xhc3M9XCJwcm9kdWN0LWRldGFpbC10aXRsZVwiPkluZ3JlZGllbnRzPC9oNT5cbjxwPkZhdmEgQmVhbnMgKEJyb2FkIEJlYW5zKSAoNDIlKSwgV2F0ZXIsIFRvbWF0byBQdXJlZSwgU3VnYXIsIE1vZGlmaWVkIE1haXplIFN0YXJjaCwgU2FsdCwgSGVyYnMgJmFtcDsgU3BpY2VzLCBDb25jZW50cmF0ZWQgTGVtb24gSnVpY2U8L3A+XG48aDUgY2xhc3M9XCJwcm9kdWN0LWRldGFpbC10aXRsZVwiPkFsbGVyZ3kgaW5mb3JtYXRpb248L2g1PlxuPHA+Tm8gQWxsZXJnZW5zPC9wPlxuPHRhYmxlIHdpZHRoPVwiMTAwJVwiPlxuPHRib2R5PlxuPHRyPlxuPHRkPjxzdHJvbmc+VHlwaWNhbCB2YWx1ZXM8L3N0cm9uZz48L3RkPlxuPHRkPjxzdHJvbmc+UGVyIDEwMGc8L3N0cm9uZz48L3RkPlxuPC90cj5cbjx0cj5cbjx0ZD5FbmVyZ3k8L3RkPlxuPHRkPjI5MmtKICg2OWtjYWwpPC90ZD5cbjwvdHI+XG48dHI+XG48dGQ+RmF0PC90ZD5cbjx0ZD4wLjRnPC90ZD5cbjwvdHI+XG48dHI+XG48dGQ+b2Ygd2hpY2ggc2F0dXJhdGVzPC90ZD5cbjx0ZD4wLjFnPC90ZD5cbjwvdHI+XG48dHI+XG48dGQ+Q2FyYm9oeWRyYXRlPC90ZD5cbjx0ZD4xMC4xZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkPm9mIHdoaWNoIHN1Z2FyczwvdGQ+XG48dGQ+NC42ZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkPkZpYnJlPC90ZD5cbjx0ZD41ZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkPlByb3RlaW48L3RkPlxuPHRkPjRnPC90ZD5cbjwvdHI+XG48dHI+XG48dGQ+U2FsdDwvdGQ+XG48dGQ+MC42ZzwvdGQ+XG48L3RyPlxuPC90Ym9keT5cbjwvdGFibGU+PGg1IGNsYXNzPVwicHJvZHVjdC1kZXRhaWwtdGl0bGVcIj5Nb3JlPC9oNT5cbjxwPkRlbGljaW91cywgbnV0cml0aW91cyBhbmQgZ29vZCBmb3IgdGhlIHNvaWwsIGZhdmEgYmVhbnMgYXJlIGEgdmFyaWV0eSBvZiBicm9hZCBiZWFuLCBWaWNpYSBmYWJhLCBsZWZ0IHRvIHJpcGVuIGFuZCBkcnkgYmVmb3JlIGhhcnZlc3QuIFRoZXnigJlyZSBhbHNvIGtub3duIGFzIGZpZWxkIGJlYW5zLCBob3JzZSBiZWFucywgV2luZHNvciBiZWFucyBvciBmdWwuPC9wPlxuPHA+U3VpdGFibGUgZm9yIHZlZ2FucyBhbmQgdmVnZXRhcmlhbnM8L3A+XG4iLCJkZmMtYjpoYXNRdWFudGl0eSI6Il86YjI2MSIsImRmYy1iOmltYWdlIjoiaHR0cHM6Ly9jZG4uc2hvcGlmeS5jb20vcy9maWxlcy8xLzA3MzEvODQ4My83OTM5L3Byb2R1Y3RzL1BhY2stQ2FuLUJha2VkLUJlYW5zLTE4MDB4Nl85ODN4NjU2XzUxMzc1OGU2LTI2MTYtNDY4Ny1hOGIyLWJhNmRkZTg2NDkyMy5qcGc/dj0xNjc3NzYwNzc4IiwiZGZjLWI6bmFtZSI6IkJha2VkIEJyaXRpc2ggQmVhbnMgLSBDYXNlLCAxMiB4IDQwMGcgKGNhbikiLCJkZmMtYjpyZWZlcmVuY2VkQnkiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjY1MDA0MDMvQ2F0YWxvZ0l0ZW0ifSx7IkBpZCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NjUwMDQwMy9DYXRhbG9nSXRlbSIsIkB0eXBlIjoiZGZjLWI6Q2F0YWxvZ0l0ZW0iLCJkZmMtYjpvZmZlcmVkVGhyb3VnaCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NjUwMDQwMy9PZmZlciIsImRmYy1iOnNrdSI6Ik5DQkIvQ0QiLCJkZmMtYjpzdG9ja0xpbWl0YXRpb24iOiItMSJ9LHsiQGlkIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY2NTAwNDAzL09mZmVyIiwiQHR5cGUiOiJkZmMtYjpPZmZlciIsImRmYy1iOmhhc1ByaWNlIjp7IkBpZCI6Il86YjI2MiJ9fSx7IkBpZCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2ODQwMDk0NyIsIkB0eXBlIjoiZGZjLWI6U3VwcGxpZWRQcm9kdWN0IiwiZGZjLWI6ZGVzY3JpcHRpb24iOiI8cD48c3Ryb25nPlRoZSBmaXJzdCBldmVyIEJyaXRpc2gtZ3Jvd24gb3JnYW5pY8KgY2hpYSBzZWVkcyEgPC9zdHJvbmc+PC9wPlxuPHA+PHN0cm9uZz5UaGVzZSB2ZXJzYXRpbGUgYW5kIG51dHJpdGlvdXMgc2VlZHMgYXJlIGRlbGljaW91cyBzcHJpbmtsZWQgb24gc2FsYWRzLCBhZGRlZCB0byBzbW9vdGhpZXMgb3IgaW4gYmFraW5nLiBUaGV5IG1ha2UgYSBncmVhdCB2ZWdhbiBlZ2cgcmVwbGFjZW1lbnQgdG9vLjwvc3Ryb25nPjwvcD5cbjxwPk9yZ2FuaWNhbGx5IGdyb3duIGJ5IEpvaG4gYW5kIEFsaWNlIFBhd3NleSBpbiBTdWZmb2xrLCB3aXRoIGd1aWRhbmNlIGZyb20gPGEgdGl0bGU9XCJSZWFzb25zIHRvIGJlIENoaWEtZnVsXCIgaHJlZj1cImh0dHBzOi8vaG9kbWVkb2RzLmNvLnVrL2Jsb2dzL25ld3MvZmlyc3QtYnJpdGlzaC1jaGlhXCI+Y2hpYSBwaW9uZWVycyBQZXRlciBhbmQgQW5kcmV3IEZhaXJzPC9hPiwgdGhlc2UgY2hpYSBzZWVkcyBhcmUgdGhlIHJlc3VsdCBvZiBmaXZlIHllYXJzIG9mIGNyb3AgdHJpYWxzIGFuZCBkZXZlbG9wbWVudHMuwqBUaGUgdGlueSBvaWwtcmljaCBzZWVkcyBhcmUgaGFydmVzdGVkIGZyb20gdGhlIDxlbT5TYWx2aWEgaGlzcGFuaWNhPC9lbT4gcGxhbnQsIGEgbWVtYmVyIG9mIHRoZSBtaW50IGZhbWlseSBvcmlnaW5hdGluZyBpbiBjZW50cmFsIEFtZXJpY2EsIHdoZXJlIGNoaWEgd2FzIGEgc3RhcGxlIGZvb2QgaW4gQXp0ZWMgY3VsdHVyZXMsIGFsb25nc2lkZSBiZWFucyBhbmQgY29ybi48L3A+XG48IS0tIHNwbGl0IC0tPjxoMz5Db21wbGV0ZSBQcm9kdWN0IERldGFpbHM8L2gzPlxuPGxpIGlkPVwidGFiMVwiIGNsYXNzPVwiYWN0aXZlXCI+XG48cD5TcHJpbmtsZSBvbiBzYWxhZHMsIHVzZSBpbiBiYWtpbmcsIGFkZCB0byBzbW9vdGhpZXMsIHBvcnJpZGdlIG9yIGdyYW5vbGEuPC9wPlxuPHA+QWR2aXNlZCBtYXhpbXVtIGRhaWx5IGludGFrZTogMTVnPC9wPlxuPGg1IGNsYXNzPVwicHJvZHVjdC1kZXRhaWwtdGl0bGVcIj5Db29raW5nIGluc3RydWN0aW9uczwvaDU+XG48cD48c3Ryb25nPkFzIGFuIGVnZyBzdWJzdGl0dXRlPC9zdHJvbmc+PGJyPlNvYWsgMSB0YWJsZXNwb29uIG9mIHNlZWRzIGluIDMgdGFibGVzcG9vbnMgb2Ygd2FybSB3YXRlciBmb3IgMzAgbWludXRlcyB0byByZXBsYWNlIG9uZSBlZ2cgaW4gdmVnYW4gYmFraW5nLjwvcD5cbjxwPjxzdHJvbmc+SW4gYmFraW5nPC9zdHJvbmc+PGJyPkFkZCB3aG9sZSBvciBncm91bmQgY2hpYSBzZWVkcyB0byBicmVhZCBtaXhlcyBhdCB1cCB0byA1JTxicj5BZGQgd2hvbGUgY2hpYSBzZWVkcyB0byBvdGhlciBiYWtpbmcgbWl4ZXMgYXQgdXAgdG8gMTAlPC9wPlxuPHA+PHN0cm9uZz5PdGhlciB1c2VzPC9zdHJvbmc+PGJyPiBBZGQgd2hvbGUgY2hpYSBzZWVkcyB0byBicmVha2Zhc3QgY2VyZWFsIGF0IHVwIHRvIDEwJTxicj5BZGQgd2hvbGUgY2hpYSBzZWVkcyB0byBmcnVpdCwgbnV0LCBhbmQgc2VlZCBtaXhlcyBhdCB1cCB0byAxMCU8YnI+QWRkIHdob2xlLCBtYXNoZWQgb3IgZ3JvdW5kIGNoaWEgc2VlZHMgdG8gZnJ1aXQganVpY2VzIG9yIHNtb290aGllcyBhdCB1cCB0byAxNWcvZGF5PC9wPlxuPGg1IGNsYXNzPVwicHJvZHVjdC1kZXRhaWwtdGl0bGVcIj5JbmdyZWRpZW50czwvaDU+XG48cD5DaGlhwqBzZWVkcyAoPGVtPlNhbHZpYSBIaXNwYW5pY2E8L2VtPik8L3A+XG48aDUgY2xhc3M9XCJwcm9kdWN0LWRldGFpbC10aXRsZVwiPkFsbGVyZ3kgaW5mb3JtYXRpb248L2g1PlxuPHA+Tm8gQWxsZXJnZW5zPC9wPlxuPHRhYmxlIGhlaWdodD1cIjI0N1wiIHdpZHRoPVwiNDE2XCI+XG48dGJvZHk+XG48dHI+XG48dGQgc3R5bGU9XCJ3aWR0aDogMjAzLjI5NXB4O1wiPjxzdHJvbmc+VHlwaWNhbCB2YWx1ZXM8L3N0cm9uZz48L3RkPlxuPHRkIHN0eWxlPVwid2lkdGg6IDE5OS42NTlweDtcIj48c3Ryb25nPlBlciAxMDBnPC9zdHJvbmc+PC90ZD5cbjwvdHI+XG48dHI+XG48dGQgc3R5bGU9XCJ3aWR0aDogMjAzLjI5NXB4O1wiPkVuZXJneTwvdGQ+XG48dGQgc3R5bGU9XCJ3aWR0aDogMTk5LjY1OXB4O1wiPjEsNjc1a0ogLyA0MDRrY2FsPC90ZD5cbjwvdHI+XG48dHI+XG48dGQgc3R5bGU9XCJ3aWR0aDogMjAzLjI5NXB4O1wiPkZhdDwvdGQ+XG48dGQgc3R5bGU9XCJ3aWR0aDogMTk5LjY1OXB4O1wiPjIzLjJnPC90ZD5cbjwvdHI+XG48dHI+XG48dGQgc3R5bGU9XCJ3aWR0aDogMjAzLjI5NXB4O1wiPm9mIHdoaWNoIHNhdHVyYXRlczwvdGQ+XG48dGQgc3R5bGU9XCJ3aWR0aDogMTk5LjY1OXB4O1wiPjIuM2c8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZCBzdHlsZT1cIndpZHRoOiAyMDMuMjk1cHg7XCI+Q2FyYm9oeWRyYXRlPC90ZD5cbjx0ZCBzdHlsZT1cIndpZHRoOiAxOTkuNjU5cHg7XCI+MTYuN2c8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZCBzdHlsZT1cIndpZHRoOiAyMDMuMjk1cHg7XCI+b2Ygd2hpY2ggc3VnYXJzPC90ZD5cbjx0ZCBzdHlsZT1cIndpZHRoOiAxOTkuNjU5cHg7XCI+MC44ZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkIHN0eWxlPVwid2lkdGg6IDIwMy4yOTVweDtcIj5GaWJyZTwvdGQ+XG48dGQgc3R5bGU9XCJ3aWR0aDogMTk5LjY1OXB4O1wiPjI3LjdnPC90ZD5cbjwvdHI+XG48dHI+XG48dGQgc3R5bGU9XCJ3aWR0aDogMjAzLjI5NXB4O1wiPlByb3RlaW48L3RkPlxuPHRkIHN0eWxlPVwid2lkdGg6IDE5OS42NTlweDtcIj4xOC4yZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkIHN0eWxlPVwid2lkdGg6IDIwMy4yOTVweDtcIj5TYWx0PC90ZD5cbjx0ZCBzdHlsZT1cIndpZHRoOiAxOTkuNjU5cHg7XCI+MC4wMWc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZCBzdHlsZT1cIndpZHRoOiAyMDMuMjk1cHg7XCI+Q2FsY2l1bTwvdGQ+XG48dGQgc3R5bGU9XCJ3aWR0aDogMTk5LjY1OXB4O1wiPjcwMW1nPC90ZD5cbjwvdHI+XG48dHI+XG48dGQgc3R5bGU9XCJ3aWR0aDogMjAzLjI5NXB4O1wiPklyb248L3RkPlxuPHRkIHN0eWxlPVwid2lkdGg6IDE5OS42NTlweDtcIj43LjJtZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkIHN0eWxlPVwid2lkdGg6IDIwMy4yOTVweDtcIj5NYWduZXNpdW08L3RkPlxuPHRkIHN0eWxlPVwid2lkdGg6IDE5OS42NTlweDtcIj4yMzBtZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkIHN0eWxlPVwid2lkdGg6IDIwMy4yOTVweDtcIj5QaG9zcGhvcm91czwvdGQ+XG48dGQgc3R5bGU9XCJ3aWR0aDogMTk5LjY1OXB4O1wiPjU4M21nPC90ZD5cbjwvdHI+XG48dHI+XG48dGQgc3R5bGU9XCJ3aWR0aDogMjAzLjI5NXB4O1wiPk9tZWdhIDMgQUxBPC90ZD5cbjx0ZCBzdHlsZT1cIndpZHRoOiAxOTkuNjU5cHg7XCI+MTEuNWc8L3RkPlxuPC90cj5cbjwvdGJvZHk+XG48L3RhYmxlPlxuPGg1IGNsYXNzPVwicHJvZHVjdC1kZXRhaWwtdGl0bGVcIj5Nb3JlPC9oNT5cbjxwPkNoaWHCoFNlZWRzIGFyZSBoaWdoIGluIGRpZXRhcnkgZmlicmUgYW5kwqBPbWVnYSAzIEFMQSBvaWxzLCBhbmQgYSBzb3VyY2Ugb2YgcHJvdGVpbi48L3A+XG48cD5TdWl0YWJsZSBmb3IgVmVnYW5zICZhbXA7IFZlZ2V0YXJpYW5zLjwvcD5cbjxwPkdyb3duIGJ5IEpvaG4gYW5kIEFsaWNlIFBhd3NleSBpbiBTdWZmb2xrLjwvcD5cbjwvbGk+IiwiZGZjLWI6aGFzUXVhbnRpdHkiOiJfOmIyNTkiLCJkZmMtYjppbWFnZSI6Imh0dHBzOi8vY2RuLnNob3BpZnkuY29tL3MvZmlsZXMvMS8wNzMxLzg0ODMvNzkzOS9wcm9kdWN0cy9PcmdhbmljLUNoaWEtMjQwMHgxODAwXzNmOWIyOWM2LWYxZmUtNDg5OS05NTdmLTAzOGJlOTc2ZGE2OC5qcGc/dj0xNjc3NzYwODE2IiwiZGZjLWI6bmFtZSI6IkNoaWEgU2VlZCwgT3JnYW5pYyAtIFJldGFpbCBwYWNrLCAzMDBnIiwiZGZjLWI6cmVmZXJlbmNlZEJ5IjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY4NDAwOTQ3L0NhdGFsb2dJdGVtIn0seyJAaWQiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0Njg0MDA5NDcvQXNQbGFubmVkQ29uc3VtcHRpb25GbG93IiwiQHR5cGUiOiJkZmMtYjpBc1BsYW5uZWRDb25zdW1wdGlvbkZsb3ciLCJkZmMtYjpjb25zdW1lcyI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2ODQwMDk0NyIsImRmYy1iOmhhc1F1YW50aXR5IjoiXzpiMjY3In0seyJAaWQiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0Njg0MDA5NDcvQXNQbGFubmVkUHJvZHVjdGlvbkZsb3ciLCJAdHlwZSI6ImRmYy1iOkFzUGxhbm5lZFByb2R1Y3Rpb25GbG93IiwiZGZjLWI6aGFzUXVhbnRpdHkiOiJfOmIyNjgiLCJkZmMtYjpwcm9kdWNlcyI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2ODQzMzcxNSJ9LHsiQGlkIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY4NDAwOTQ3L0FzUGxhbm5lZFRyYW5zZm9ybWF0aW9uIiwiQHR5cGUiOiJkZmMtYjpBc1BsYW5uZWRUcmFuc2Zvcm1hdGlvbiIsImRmYy1iOmhhc0luY29tZSI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2ODQwMDk0Ny9Bc1BsYW5uZWRDb25zdW1wdGlvbkZsb3ciLCJkZmMtYjpoYXNPdXRjb21lIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY4NDAwOTQ3L0FzUGxhbm5lZFByb2R1Y3Rpb25GbG93In0seyJAaWQiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0Njg0MDA5NDcvQ2F0YWxvZ0l0ZW0iLCJAdHlwZSI6ImRmYy1iOkNhdGFsb2dJdGVtIiwiZGZjLWI6b2ZmZXJlZFRocm91Z2giOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0Njg0MDA5NDcvT2ZmZXIiLCJkZmMtYjpza3UiOiJPR0NIL1IzIiwiZGZjLWI6c3RvY2tMaW1pdGF0aW9uIjoiLTEifSx7IkBpZCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2ODQwMDk0Ny9PZmZlciIsIkB0eXBlIjoiZGZjLWI6T2ZmZXIiLCJkZmMtYjpoYXNQcmljZSI6eyJAaWQiOiJfOmIyNjAifX0seyJAaWQiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0Njg0MzM3MTUiLCJAdHlwZSI6ImRmYy1iOlN1cHBsaWVkUHJvZHVjdCIsImRmYy1iOmRlc2NyaXB0aW9uIjoiPHA+PHN0cm9uZz5UaGUgZmlyc3QgZXZlciBCcml0aXNoLWdyb3duIG9yZ2FuaWPCoGNoaWEgc2VlZHMhIDwvc3Ryb25nPjwvcD5cbjxwPjxzdHJvbmc+VGhlc2UgdmVyc2F0aWxlIGFuZCBudXRyaXRpb3VzIHNlZWRzIGFyZSBkZWxpY2lvdXMgc3ByaW5rbGVkIG9uIHNhbGFkcywgYWRkZWQgdG8gc21vb3RoaWVzIG9yIGluIGJha2luZy4gVGhleSBtYWtlIGEgZ3JlYXQgdmVnYW4gZWdnIHJlcGxhY2VtZW50IHRvby48L3N0cm9uZz48L3A+XG48cD5PcmdhbmljYWxseSBncm93biBieSBKb2huIGFuZCBBbGljZSBQYXdzZXkgaW4gU3VmZm9saywgd2l0aCBndWlkYW5jZSBmcm9tIDxhIHRpdGxlPVwiUmVhc29ucyB0byBiZSBDaGlhLWZ1bFwiIGhyZWY9XCJodHRwczovL2hvZG1lZG9kcy5jby51ay9ibG9ncy9uZXdzL2ZpcnN0LWJyaXRpc2gtY2hpYVwiPmNoaWEgcGlvbmVlcnMgUGV0ZXIgYW5kIEFuZHJldyBGYWlyczwvYT4sIHRoZXNlIGNoaWEgc2VlZHMgYXJlIHRoZSByZXN1bHQgb2YgZml2ZSB5ZWFycyBvZiBjcm9wIHRyaWFscyBhbmQgZGV2ZWxvcG1lbnRzLsKgVGhlIHRpbnkgb2lsLXJpY2ggc2VlZHMgYXJlIGhhcnZlc3RlZCBmcm9tIHRoZSA8ZW0+U2FsdmlhIGhpc3BhbmljYTwvZW0+IHBsYW50LCBhIG1lbWJlciBvZiB0aGUgbWludCBmYW1pbHkgb3JpZ2luYXRpbmcgaW4gY2VudHJhbCBBbWVyaWNhLCB3aGVyZSBjaGlhIHdhcyBhIHN0YXBsZSBmb29kIGluIEF6dGVjIGN1bHR1cmVzLCBhbG9uZ3NpZGUgYmVhbnMgYW5kIGNvcm4uPC9wPlxuPCEtLSBzcGxpdCAtLT48aDM+Q29tcGxldGUgUHJvZHVjdCBEZXRhaWxzPC9oMz5cbjxsaSBpZD1cInRhYjFcIiBjbGFzcz1cImFjdGl2ZVwiPlxuPHA+U3ByaW5rbGUgb24gc2FsYWRzLCB1c2UgaW4gYmFraW5nLCBhZGQgdG8gc21vb3RoaWVzLCBwb3JyaWRnZSBvciBncmFub2xhLjwvcD5cbjxwPkFkdmlzZWQgbWF4aW11bSBkYWlseSBpbnRha2U6IDE1ZzwvcD5cbjxoNSBjbGFzcz1cInByb2R1Y3QtZGV0YWlsLXRpdGxlXCI+Q29va2luZyBpbnN0cnVjdGlvbnM8L2g1PlxuPHA+PHN0cm9uZz5BcyBhbiBlZ2cgc3Vic3RpdHV0ZTwvc3Ryb25nPjxicj5Tb2FrIDEgdGFibGVzcG9vbiBvZiBzZWVkcyBpbiAzIHRhYmxlc3Bvb25zIG9mIHdhcm0gd2F0ZXIgZm9yIDMwIG1pbnV0ZXMgdG8gcmVwbGFjZSBvbmUgZWdnIGluIHZlZ2FuIGJha2luZy48L3A+XG48cD48c3Ryb25nPkluIGJha2luZzwvc3Ryb25nPjxicj5BZGQgd2hvbGUgb3IgZ3JvdW5kIGNoaWEgc2VlZHMgdG8gYnJlYWQgbWl4ZXMgYXQgdXAgdG8gNSU8YnI+QWRkIHdob2xlIGNoaWEgc2VlZHMgdG8gb3RoZXIgYmFraW5nIG1peGVzIGF0IHVwIHRvIDEwJTwvcD5cbjxwPjxzdHJvbmc+T3RoZXIgdXNlczwvc3Ryb25nPjxicj4gQWRkIHdob2xlIGNoaWEgc2VlZHMgdG8gYnJlYWtmYXN0IGNlcmVhbCBhdCB1cCB0byAxMCU8YnI+QWRkIHdob2xlIGNoaWEgc2VlZHMgdG8gZnJ1aXQsIG51dCwgYW5kIHNlZWQgbWl4ZXMgYXQgdXAgdG8gMTAlPGJyPkFkZCB3aG9sZSwgbWFzaGVkIG9yIGdyb3VuZCBjaGlhIHNlZWRzIHRvIGZydWl0IGp1aWNlcyBvciBzbW9vdGhpZXMgYXQgdXAgdG8gMTVnL2RheTwvcD5cbjxoNSBjbGFzcz1cInByb2R1Y3QtZGV0YWlsLXRpdGxlXCI+SW5ncmVkaWVudHM8L2g1PlxuPHA+Q2hpYcKgc2VlZHMgKDxlbT5TYWx2aWEgSGlzcGFuaWNhPC9lbT4pPC9wPlxuPGg1IGNsYXNzPVwicHJvZHVjdC1kZXRhaWwtdGl0bGVcIj5BbGxlcmd5IGluZm9ybWF0aW9uPC9oNT5cbjxwPk5vIEFsbGVyZ2VuczwvcD5cbjx0YWJsZSBoZWlnaHQ9XCIyNDdcIiB3aWR0aD1cIjQxNlwiPlxuPHRib2R5PlxuPHRyPlxuPHRkIHN0eWxlPVwid2lkdGg6IDIwMy4yOTVweDtcIj48c3Ryb25nPlR5cGljYWwgdmFsdWVzPC9zdHJvbmc+PC90ZD5cbjx0ZCBzdHlsZT1cIndpZHRoOiAxOTkuNjU5cHg7XCI+PHN0cm9uZz5QZXIgMTAwZzwvc3Ryb25nPjwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkIHN0eWxlPVwid2lkdGg6IDIwMy4yOTVweDtcIj5FbmVyZ3k8L3RkPlxuPHRkIHN0eWxlPVwid2lkdGg6IDE5OS42NTlweDtcIj4xLDY3NWtKIC8gNDA0a2NhbDwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkIHN0eWxlPVwid2lkdGg6IDIwMy4yOTVweDtcIj5GYXQ8L3RkPlxuPHRkIHN0eWxlPVwid2lkdGg6IDE5OS42NTlweDtcIj4yMy4yZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkIHN0eWxlPVwid2lkdGg6IDIwMy4yOTVweDtcIj5vZiB3aGljaCBzYXR1cmF0ZXM8L3RkPlxuPHRkIHN0eWxlPVwid2lkdGg6IDE5OS42NTlweDtcIj4yLjNnPC90ZD5cbjwvdHI+XG48dHI+XG48dGQgc3R5bGU9XCJ3aWR0aDogMjAzLjI5NXB4O1wiPkNhcmJvaHlkcmF0ZTwvdGQ+XG48dGQgc3R5bGU9XCJ3aWR0aDogMTk5LjY1OXB4O1wiPjE2LjdnPC90ZD5cbjwvdHI+XG48dHI+XG48dGQgc3R5bGU9XCJ3aWR0aDogMjAzLjI5NXB4O1wiPm9mIHdoaWNoIHN1Z2FyczwvdGQ+XG48dGQgc3R5bGU9XCJ3aWR0aDogMTk5LjY1OXB4O1wiPjAuOGc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZCBzdHlsZT1cIndpZHRoOiAyMDMuMjk1cHg7XCI+RmlicmU8L3RkPlxuPHRkIHN0eWxlPVwid2lkdGg6IDE5OS42NTlweDtcIj4yNy43ZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkIHN0eWxlPVwid2lkdGg6IDIwMy4yOTVweDtcIj5Qcm90ZWluPC90ZD5cbjx0ZCBzdHlsZT1cIndpZHRoOiAxOTkuNjU5cHg7XCI+MTguMmc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZCBzdHlsZT1cIndpZHRoOiAyMDMuMjk1cHg7XCI+U2FsdDwvdGQ+XG48dGQgc3R5bGU9XCJ3aWR0aDogMTk5LjY1OXB4O1wiPjAuMDFnPC90ZD5cbjwvdHI+XG48dHI+XG48dGQgc3R5bGU9XCJ3aWR0aDogMjAzLjI5NXB4O1wiPkNhbGNpdW08L3RkPlxuPHRkIHN0eWxlPVwid2lkdGg6IDE5OS42NTlweDtcIj43MDFtZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkIHN0eWxlPVwid2lkdGg6IDIwMy4yOTVweDtcIj5Jcm9uPC90ZD5cbjx0ZCBzdHlsZT1cIndpZHRoOiAxOTkuNjU5cHg7XCI+Ny4ybWc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZCBzdHlsZT1cIndpZHRoOiAyMDMuMjk1cHg7XCI+TWFnbmVzaXVtPC90ZD5cbjx0ZCBzdHlsZT1cIndpZHRoOiAxOTkuNjU5cHg7XCI+MjMwbWc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZCBzdHlsZT1cIndpZHRoOiAyMDMuMjk1cHg7XCI+UGhvc3Bob3JvdXM8L3RkPlxuPHRkIHN0eWxlPVwid2lkdGg6IDE5OS42NTlweDtcIj41ODNtZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkIHN0eWxlPVwid2lkdGg6IDIwMy4yOTVweDtcIj5PbWVnYSAzIEFMQTwvdGQ+XG48dGQgc3R5bGU9XCJ3aWR0aDogMTk5LjY1OXB4O1wiPjExLjVnPC90ZD5cbjwvdHI+XG48L3Rib2R5PlxuPC90YWJsZT5cbjxoNSBjbGFzcz1cInByb2R1Y3QtZGV0YWlsLXRpdGxlXCI+TW9yZTwvaDU+XG48cD5DaGlhwqBTZWVkcyBhcmUgaGlnaCBpbiBkaWV0YXJ5IGZpYnJlIGFuZMKgT21lZ2EgMyBBTEEgb2lscywgYW5kIGEgc291cmNlIG9mIHByb3RlaW4uPC9wPlxuPHA+U3VpdGFibGUgZm9yIFZlZ2FucyAmYW1wOyBWZWdldGFyaWFucy48L3A+XG48cD5Hcm93biBieSBKb2huIGFuZCBBbGljZSBQYXdzZXkgaW4gU3VmZm9say48L3A+XG48L2xpPiIsImRmYy1iOmhhc1F1YW50aXR5IjoiXzpiMjYzIiwiZGZjLWI6aW1hZ2UiOiJodHRwczovL2Nkbi5zaG9waWZ5LmNvbS9zL2ZpbGVzLzEvMDczMS84NDgzLzc5MzkvcHJvZHVjdHMvT3JnYW5pYy1DaGlhLTI0MDB4MTgwMF8zZjliMjljNi1mMWZlLTQ4OTktOTU3Zi0wMzhiZTk3NmRhNjguanBnP3Y9MTY3Nzc2MDgxNiIsImRmYy1iOm5hbWUiOiJDaGlhIFNlZWQsIE9yZ2FuaWMgLSBDYXNlLCA4IHggMzAwZyIsImRmYy1iOnJlZmVyZW5jZWRCeSI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2ODQzMzcxNS9DYXRhbG9nSXRlbSJ9LHsiQGlkIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY4NDMzNzE1L0NhdGFsb2dJdGVtIiwiQHR5cGUiOiJkZmMtYjpDYXRhbG9nSXRlbSIsImRmYy1iOm9mZmVyZWRUaHJvdWdoIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY4NDMzNzE1L09mZmVyIiwiZGZjLWI6c2t1IjoiT0dDSC9DOCIsImRmYy1iOnN0b2NrTGltaXRhdGlvbiI6Ii0xIn0seyJAaWQiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0Njg0MzM3MTUvT2ZmZXIiLCJAdHlwZSI6ImRmYy1iOk9mZmVyIiwiZGZjLWI6aGFzUHJpY2UiOnsiQGlkIjoiXzpiMjY0In19XX0= + recorded_at: Fri, 06 Sep 2024 06:34:34 GMT - request: method: post uri: https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders body: encoding: UTF-8 - string: '{"@context":"https://www.datafoodconsortium.org","@graph":[{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/#","@type":"dfc-b:Order","dfc-b:orderNumber":"","dfc-b:date":"","dfc-b:hasPart":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/#/OrderLines/1","dfc-b:orderedBy":"http://test.host/api/dfc/enterprises/479","dfc-b:hasOrderStatus":"dfc-v:Held"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/#/OrderLines/1","@type":"dfc-b:OrderLine","dfc-b:description":"","dfc-b:quantity":3,"dfc-b:concerns":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635/Offer"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635/Offer","@type":"dfc-b:Offer","dfc-b:hasPrice":{"@type":"dfc-b:Price","dfc-b:value":"2.09","dfc-b:VATrate":"0","dfc-b:hasUnit":"dfc-m:Euro"},"dfc-b:stockLimitation":0.0,"dfc-b:offeredItem":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635","@type":"dfc-b:SuppliedProduct","dfc-b:name":"Baked + string: '{"@context":"https://www.datafoodconsortium.org","@graph":[{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders","@type":"dfc-b:Order","dfc-b:orderNumber":"","dfc-b:date":"","dfc-b:belongsTo":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SalesSession/#","dfc-b:hasPart":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/OrderLines/1","dfc-b:orderedBy":"http://test.host/api/dfc/enterprises/665","dfc-b:hasOrderStatus":"dfc-v:Held"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/OrderLines/1","@type":"dfc-b:OrderLine","dfc-b:description":"","dfc-b:quantity":3,"dfc-b:concerns":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635/Offer"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635/Offer","@type":"dfc-b:Offer","dfc-b:hasPrice":{"@type":"dfc-b:Price","dfc-b:value":"2.09","dfc-b:VATrate":"0","dfc-b:hasUnit":"dfc-m:Euro"},"dfc-b:stockLimitation":0.0,"dfc-b:offeredItem":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635","@type":"dfc-b:SuppliedProduct","dfc-b:name":"Baked British Beans - Retail can, 400g (can)","dfc-b:description":"\n\n\n\n\n\n
They''re back!
\n

Think @@ -283,7 +283,7 @@ http_interactions: for the soil, fava beans are a variety of broad bean, Vicia faba, left to ripen and dry before harvest. They’re also known as field beans, horse beans, Windsor beans or ful.

\n

Suitable for vegans and vegetarians

\n","dfc-b:hasQuantity":{"@type":"dfc-b:QuantitativeValue","dfc-b:hasUnit":"dfc-m:Kilogram","dfc-b:value":"0.4"},"dfc-b:alcoholPercentage":0.0,"dfc-b:lifetime":"","dfc-b:usageOrStorageCondition":"","dfc-b:referencedBy":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635/CatalogItem","dfc-b:image":"https://cdn.shopify.com/s/files/1/0731/8483/7939/products/Pack-Can-Baked-Beans-1800x6_983x656_513758e6-2616-4687-a8b2-ba6dde864923.jpg?v=1677760778","dfc-b:totalTheoreticalStock":0.0},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SalesSession/#","@type":"dfc-b:SaleSession","dfc-b:beginDate":"Thu - Sep 05 2024 00:45:42 UTC","dfc-b:endDate":"Fri Sep 13 2024 00:45:42 UTC","dfc-b:quantity":0.0}]}' + Sep 05 2024 06:34:24 UTC","dfc-b:endDate":"Fri Sep 13 2024 06:34:24 UTC","dfc-b:quantity":0.0}]}' headers: Content-Type: - application/json @@ -303,11 +303,11 @@ http_interactions: Server: - openresty Date: - - Fri, 06 Sep 2024 00:45:57 GMT + - Fri, 06 Sep 2024 06:34:41 GMT Content-Type: - application/json; charset=utf-8 Content-Length: - - '1262' + - '1264' Connection: - keep-alive X-Powered-By: @@ -315,7 +315,7 @@ http_interactions: Access-Control-Allow-Origin: - "*" Etag: - - W/"4ee-u7/JHhFhrfUFr0lrLgzFf460cjk" + - W/"4f0-Qwtp3ip5lHsnw1RWqTan7EZiREw" Set-Cookie: - SRVGROUP=common; path=/; HttpOnly X-Resolver-Ip: @@ -324,6 +324,102 @@ http_interactions: - max-age=15811200 body: encoding: UTF-8 - string: '{"@context":"https://www.datafoodconsortium.org","@graph":[{"@id":"_:b13","@type":"dfc-b:Price","dfc-b:hasUnit":"dfc-m:PoundSterling","dfc-b:value":"2.09"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Offers/44519466467635","@type":"dfc-b:Offer","dfc-b:offeredItem":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635"}},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175309189427","@type":"dfc-b:Order","dfc-b:hasOrderStatus":{"@id":"dfc-v:Held"},"dfc-b:hasPart":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175309189427/orderLines/124"}},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175309189427/orderLines/124","@type":"dfc-b:OrderLine","dfc-b:concerns":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Offers/44519466467635"},"dfc-b:hasPrice":{"@id":"_:b13"},"dfc-b:quantity":"3"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635","@type":"dfc-b:SuppliedProduct"}]}' - recorded_at: Fri, 06 Sep 2024 00:45:57 GMT + string: '{"@context":"https://www.datafoodconsortium.org","@graph":[{"@id":"_:b269","@type":"dfc-b:Price","dfc-b:hasUnit":"dfc-m:PoundSterling","dfc-b:value":"2.09"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Offers/44519466467635","@type":"dfc-b:Offer","dfc-b:offeredItem":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635"}},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175330521395","@type":"dfc-b:Order","dfc-b:hasOrderStatus":{"@id":"dfc-v:Held"},"dfc-b:hasPart":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175330521395/orderLines/141"}},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175330521395/orderLines/141","@type":"dfc-b:OrderLine","dfc-b:concerns":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Offers/44519466467635"},"dfc-b:hasPrice":{"@id":"_:b269"},"dfc-b:quantity":"3"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635","@type":"dfc-b:SuppliedProduct"}]}' + recorded_at: Fri, 06 Sep 2024 06:34:41 GMT +- request: + method: get + uri: https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175330521395 + body: + encoding: US-ASCII + string: '' + headers: + Content-Type: + - application/json + Authorization: + - "" + User-Agent: + - Faraday v2.9.0 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - openresty + Date: + - Fri, 06 Sep 2024 06:34:43 GMT + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1264' + Connection: + - keep-alive + X-Powered-By: + - Express + Access-Control-Allow-Origin: + - "*" + Etag: + - W/"4f0-qzzm+NTSPu/Sz9mPZujSvqXsHeU" + Set-Cookie: + - SRVGROUP=common; path=/; HttpOnly + X-Resolver-Ip: + - 185.172.100.59 + Strict-Transport-Security: + - max-age=15811200 + body: + encoding: UTF-8 + string: '{"@context":"https://www.datafoodconsortium.org","@graph":[{"@id":"_:b270","@type":"dfc-b:Price","dfc-b:hasUnit":"dfc-m:PoundSterling","dfc-b:value":"2.09"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Offers/44519466467635","@type":"dfc-b:Offer","dfc-b:offeredItem":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635"}},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175330521395","@type":"dfc-b:Order","dfc-b:hasOrderStatus":{"@id":"dfc-v:Held"},"dfc-b:hasPart":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175330521395/orderLines/141"}},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175330521395/orderLines/141","@type":"dfc-b:OrderLine","dfc-b:concerns":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Offers/44519466467635"},"dfc-b:hasPrice":{"@id":"_:b270"},"dfc-b:quantity":"3"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635","@type":"dfc-b:SuppliedProduct"}]}' + recorded_at: Fri, 06 Sep 2024 06:34:43 GMT +- request: + method: put + uri: https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175330521395 + body: + encoding: UTF-8 + string: '{"@context":"https://www.datafoodconsortium.org","@graph":[{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175330521395","@type":"dfc-b:Order","dfc-b:orderNumber":"","dfc-b:date":"","dfc-b:hasPart":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175330521395/orderLines/141","dfc-b:hasOrderStatus":"dfc-v:Complete"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175330521395/orderLines/141","@type":"dfc-b:OrderLine","dfc-b:description":"","dfc-b:quantity":"3","dfc-b:hasPrice":{"@type":"dfc-b:Price","dfc-b:value":"2.09","dfc-b:VATrate":0.0,"dfc-b:hasUnit":"dfc-m:PoundSterling"},"dfc-b:concerns":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Offers/44519466467635"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Offers/44519466467635","@type":"dfc-b:Offer","dfc-b:stockLimitation":0.0,"dfc-b:offeredItem":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635","@type":"dfc-b:SuppliedProduct","dfc-b:name":"","dfc-b:description":"","dfc-b:alcoholPercentage":0.0,"dfc-b:lifetime":"","dfc-b:usageOrStorageCondition":"","dfc-b:totalTheoreticalStock":0.0}]}' + headers: + Content-Type: + - application/json + Authorization: + - "" + User-Agent: + - Faraday v2.9.0 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - openresty + Date: + - Fri, 06 Sep 2024 06:34:51 GMT + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1324' + Connection: + - keep-alive + X-Powered-By: + - Express + Access-Control-Allow-Origin: + - "*" + Etag: + - W/"52c-MhjdN5yhkmR8Xm1Pa2N1UZx0P7Q" + Set-Cookie: + - SRVGROUP=common; path=/; HttpOnly + X-Resolver-Ip: + - 185.172.100.60 + Strict-Transport-Security: + - max-age=15811200 + body: + encoding: UTF-8 + string: '{"@context":"https://www.datafoodconsortium.org","@graph":[{"@id":"_:b271","@type":"dfc-b:Price","dfc-b:hasUnit":"dfc-m:PoundSterling","dfc-b:value":"2.09"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Offers/44519466467635","@type":"dfc-b:Offer","dfc-b:offeredItem":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635"}},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175330521395","@type":"dfc-b:Order","dfc-b:hasFulfilmentStatus":{"@id":"dfc-v:Unfulfilled"},"dfc-b:hasOrderStatus":{"@id":"dfc-v:Complete"},"dfc-b:hasPart":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175330521395/orderLines/141"}},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175330521395/orderLines/141","@type":"dfc-b:OrderLine","dfc-b:concerns":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Offers/44519466467635"},"dfc-b:hasPrice":{"@id":"_:b271"},"dfc-b:quantity":"3"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635","@type":"dfc-b:SuppliedProduct"}]}' + recorded_at: Fri, 06 Sep 2024 06:34:51 GMT recorded_with: VCR 6.2.0 diff --git a/spec/jobs/backorder_job_spec.rb b/spec/jobs/backorder_job_spec.rb index 110822b325..bf1a8405e2 100644 --- a/spec/jobs/backorder_job_spec.rb +++ b/spec/jobs/backorder_job_spec.rb @@ -30,9 +30,15 @@ RSpec.describe BackorderJob do variant.semantic_links << SemanticLink.new( semantic_id: product_link ) - BackorderJob.check_stock(order) + + expect { + BackorderJob.check_stock(order) + }.to enqueue_job CompleteBackorderJob expect(variant.on_hand).to eq 0 + + # Clean up after ourselves: + perform_enqueued_jobs(only: CompleteBackorderJob) end end