<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>207079</bug_id>
          
          <creation_ts>2020-01-31 15:45:54 -0800</creation_ts>
          <short_desc>Pass a hint from the extension to decidePolicyForSOAuthorizationLoadWithCurrentPolicy</short_desc>
          <delta_ts>2020-02-03 21:31:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1613628</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-01-31 15:45:54 -0800</bug_when>
    <thetext>Pass a hint from the extension to decidePolicyForSOAuthorizationLoadWithCurrentPolicy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613629</commentid>
    <comment_count>1</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-01-31 15:46:09 -0800</bug_when>
    <thetext>&lt;rdar://problem/48290464&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613634</commentid>
    <comment_count>2</comment_count>
      <attachid>389433</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-01-31 15:55:16 -0800</bug_when>
    <thetext>Created attachment 389433
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613640</commentid>
    <comment_count>3</comment_count>
      <attachid>389435</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-01-31 16:06:08 -0800</bug_when>
    <thetext>Created attachment 389435
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613666</commentid>
    <comment_count>4</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-01-31 16:48:52 -0800</bug_when>
    <thetext>Looks like you have an iOS build failure. Otherwise looks good:

CompileC /Volumes/Data/worker/iOS-13-Build-EWS/build/WebKitBuild/WebKit.build/Release-iphoneos/WebKit.build/Objects-normal/arm64/UnifiedSource36-mm.o /Volumes/Data/worker/iOS-13-Build-EWS/build/WebKitBuild/Release-iphoneos/DerivedSources/WebKit2/unified-sources/UnifiedSource36-mm.mm normal arm64 objective-c++ com.apple.compilers.llvm.clang.1_0.compiler
    cd /Volumes/Data/worker/iOS-13-Build-EWS/build/Source/WebKit
    export LANG=en_US.US-ASCII
    export PATH=&quot;/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin&quot;
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x objective-c++ -target arm64-apple-ios13.2 -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -std=gnu++1z -stdlib=libc++ -fobjc-weak -gmodules -Wno-trigraphs -fno-exceptions -fno-rtti -fno-sanitize=vptr -fpascal-strings -Os -fno-common -Werror -Wno-missing-field-initializers -Wmissing-prototypes -Wunreachable-code -Wno-implicit-atomic-properties -Wno-objc-interface-ivars -Wno-arc-repeated-use-of-weak -Wimplicit-retain-self -Wnon-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wduplicate-method-match -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wno-float-conversion -Wnon-literal-null-conversion -Wobjc-literal-conversion -Wsign-compare -Wno-shorten-64-to-32 -Wnewline-eof -Wno-selector -Wno-strict-selector-match -Wundeclared-selector -Wdeprecated-implementations -Wno-c++11-extensions -DNDEBUG -DENABLE_3D_TRANSFORMS -DENABLE_APPLE_PAY -DENABLE_APPLE_PAY_SESSION_V3 -DENABLE_APPLE_PAY_SESSION_V4 -DENABLE_APPLICATION_MANIFEST -DENABLE_ATTACHMENT_ELEMENT -DENABLE_AVF_CAPTIONS -DENABLE_CACHE_PARTITIONING -DENABLE_CHANNEL_MESSAGING -DENABLE_CONTENT_FILTERING -DENABLE_CSS_BOX_DECORATION_BREAK -DENABLE_CSS_COMPOSITING -DENABLE_CSS_CONIC_GRADIENTS -DENABLE_CSS_PAINTING_API -DENABLE_CSS_SCROLL_SNAP -DENABLE_CSS_SELECTORS_LEVEL4 -DENABLE_CSS_TRAILING_WORD -DENABLE_CSS_TYPED_OM -DENABLE_CURSOR_VISIBILITY -DENABLE_DARK_MODE_CSS -DENABLE_DATACUE_VALUE -DENABLE_DATALIST_ELEMENT -DENABLE_DATA_INTERACTION -DENABLE_DEVICE_ORIENTATION -DENABLE_DRAG_SUPPORT -DENABLE_ENCRYPTED_MEDIA -DENABLE_EXPERIMENTAL_FEATURES -DENABLE_FILTERS_LEVEL_2 -DENABLE_FTL_JIT -DENABLE_FULLSCREEN_API -DENABLE_PICTURE_IN_PICTURE_API -DENABLE_GAMEPAD -DENABLE_GEOLOCATION -DENABLE_GPU_PROCESS -DENABLE_INDEXED_DATABASE -DENABLE_INDEXED_DATABASE_IN_WORKERS -DENABLE_INPUT_TYPE_COLOR -DENABLE_INPUT_TYPE_DATE -DENABLE_INPUT_TYPE_DATETIMELOCAL -DENABLE_INPUT_TYPE_MONTH -DENABLE_INPUT_TYPE_TIME -DENABLE_INPUT_TYPE_WEEK -DENABLE_INSPECTOR_ALTERNATE_DISPATCHERS -DENABLE_INSPECTOR_TELEMETRY -DENABLE_INTERSECTION_OBSERVER -DENABLE_INTL -DENABLE_LAYOUT_FORMATTING_CONTEXT -DENABLE_LEGACY_CSS_VENDOR_PREFIXES -DENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER -DENABLE_LEGACY_ENCRYPTED_MEDIA -DENABLE_LETTERPRESS -DENABLE_MATHML -DENABLE_MEDIA_CAPTURE -DENABLE_MEDIA_CONTROLS_SCRIPT -DENABLE_MEDIA_STREAM -DENABLE_MEMORY_SAMPLER -DENABLE_METER_ELEMENT -DENABLE_NAVIGATOR_STANDALONE -DENABLE_NETWORK_CACHE_SPECULATIVE_REVALIDATION -DENABLE_NETWORK_CACHE_STALE_WHILE_REVALIDATE -DENABLE_OVERFLOW_SCROLLING_TOUCH -DENABLE_PAYMENT_REQUEST -DENABLE_POINTER_EVENTS -DENABLE_PUBLIC_SUFFIX_LIST -DENABLE_REMOTE_INSPECTOR -DENABLE_RESIZE_OBSERVER -DENABLE_RESOURCE_LOAD_STATISTICS -DENABLE_RESOURCE_USAGE -DENABLE_SANDBOX_EXTENSIONS -DENABLE_SERVER_PRECONNECT -DENABLE_SERVICE_WORKER -DENABLE_SHAREABLE_RESOURCE -DENABLE_SPEECH_SYNTHESIS -DENABLE_STREAMS_API -DENABLE_SVG_FONTS -DENABLE_TELEPHONE_NUMBER_DETECTION -DENABLE_TEXT_AUTOSIZING -DENABLE_USERSELECT_ALL -DENABLE_USER_MESSAGE_HANDLERS -DENABLE_VARIATION_FONTS -DENABLE_VIDEO -DENABLE_VIDEO_PRESENTATION_MODE -DENABLE_VIDEO_TRACK -DENABLE_WEBDRIVER_KEYBOARD_INTERACTIONS -DENABLE_WEBDRIVER_TOUCH_INTERACTIONS -DENABLE_WEBGL -DENABLE_WEBGL2 -DENABLE_WEBGPU -DENABLE_WEB_AUDIO -DENABLE_WEB_AUTHN -DENABLE_WEB_CRYPTO -DENABLE_WEB_RTC -DENABLE_WIRELESS_PLAYBACK_TARGET -DENABLE_XSLT -DHAVE_CORE_PREDICTION -DU_HIDE_DEPRECATED_API -DU_DISABLE_RENAMING=1 -DU_SHOW_CPLUSPLUS_API=0 -DFRAMEWORK_NAME=WebKit -DOBJC_OLD_DISPATCH_PROTOTYPES=0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk -fstrict-aliasing -Wprotocol -Wdeprecated-declarations -Winvalid-offsetof -g -fvisibility=hidden -fvisibility-inlines-hidden -fno-threadsafe-statics -Wno-sign-conversion -Winfinite-recursion -Wmove -Wcomma -Wblock-capture-autoreleasing -Wstrict-prototypes -Wrange-loop-analysis -Wno-semicolon-before-method-body -iquote /Volumes/Data/worker/iOS-13-Build-EWS/build/WebKitBuild/WebKit.build/Release-iphoneos/WebKit.build/WebKit-generated-files.hmap -I/Volumes/Data/worker/iOS-13-Build-EWS/build/WebKitBuild/WebKit.build/Release-iphoneos/WebKit.build/WebKit-own-target-headers.hmap -I/Volumes/Data/worker/iOS-13-Build-EWS/build/WebKitBuild/WebKit.build/Release-iphoneos/WebKit.build/WebKit-all-target-headers.hmap -iquote /Volumes/Data/worker/iOS-13-Build-EWS/build/WebKitBuild/WebKit.build/Release-iphoneos/WebKit.build/WebKit-project-headers.hmap -I/Volumes/Data/worker/iOS-13-Build-EWS/build/WebKitBuild/Release-iphoneos/include -I/Volumes/Data/worker/iOS-13-Build-EWS/build/WebKitBuild/Release-iphoneos/usr/local/include -I/Volumes/Data/worker/iOS-13-Build-EWS/build/WebKitBuild/Release-iphoneos/WebCore.framework/PrivateHeaders/ForwardingHeaders -I/Volumes/Data/worker/iOS-13-Build-EWS/build/WebKitBuild/Release-iphoneos/DerivedSources/WebKit2 -I/Volumes/Data/worker/iOS-13-Build-EWS/build/WebKitBuild/Release-iphoneos/usr/local/include/WebKitAdditions -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk/usr/local/include/WebKitAdditions -I/Volumes/Data/worker/iOS-13-Build-EWS/build/WebKitBuild/Release-iphoneos/usr/local/include/webrtc -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk/usr/local/include/webrtc -I/Volumes/Data/worker/iOS-13-Build-EWS/build/Source/WebKit -I/Volumes/Data/worker/iOS-13-Build-EWS/build/WebKitBuild/WebKit.build/Release-iphoneos/WebKit.build/DerivedSources-normal/arm64 -I/Volumes/Data/worker/iOS-13-Build-EWS/build/WebKitBuild/WebKit.build/Release-iphoneos/WebKit.build/DerivedSources/arm64 -I/Volumes/Data/worker/iOS-13-Build-EWS/build/WebKitBuild/WebKit.build/Release-iphoneos/WebKit.build/DerivedSources -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wconditional-uninitialized -Wextra-tokens -Wformat-security -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wno-unused-parameter -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough -F/Volumes/Data/worker/iOS-13-Build-EWS/build/WebKitBuild/Release-iphoneos -F/Volumes/Data/worker/iOS-13-Build-EWS/build/Source/WebKit/../../WebKitLibraries/WebKitPrivateFrameworkStubs/iOS/13 -iframework /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk/System/Library/PrivateFrameworks -iframework /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk/System/Library/Frameworks -iframework /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk/System/Library/PrivateFrameworks -isystem /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk/System/Library/Frameworks/System.framework/PrivateHeaders -include /Volumes/Data/worker/iOS-13-Build-EWS/build/WebKitBuild/PrecompiledHeaders/WebKit2Prefix-gvqcbjjmpdxaschbrgxmqbsmhhof/WebKit2Prefix.h -MMD -MT dependencies -MF /Volumes/Data/worker/iOS-13-Build-EWS/build/WebKitBuild/WebKit.build/Release-iphoneos/WebKit.build/Objects-normal/arm64/UnifiedSource36-mm.d --serialize-diagnostics /Volumes/Data/worker/iOS-13-Build-EWS/build/WebKitBuild/WebKit.build/Release-iphoneos/WebKit.build/Objects-normal/arm64/UnifiedSource36-mm.dia -c /Volumes/Data/worker/iOS-13-Build-EWS/build/WebKitBuild/Release-iphoneos/DerivedSources/WebKit2/unified-sources/UnifiedSource36-mm.mm -o /Volumes/Data/worker/iOS-13-Build-EWS/build/WebKitBuild/WebKit.build/Release-iphoneos/WebKit.build/Objects-normal/arm64/UnifiedSource36-mm.o
In file included from /Volumes/Data/worker/iOS-13-Build-EWS/build/WebKitBuild/Release-iphoneos/DerivedSources/WebKit2/unified-sources/UnifiedSource36-mm.mm:1:
In file included from /Volumes/Data/worker/iOS-13-Build-EWS/build/Source/WebKit/UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.mm:27:
In file included from /Volumes/Data/worker/iOS-13-Build-EWS/build/Source/WebKit/UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.h:30:
/Volumes/Data/worker/iOS-13-Build-EWS/build/WebKitBuild/Release-iphoneos/usr/local/include/pal/spi/cocoa/AppSSOSPI.h:83:109: error: unknown type name &apos;SOAuthorizationHints&apos;; did you mean &apos;SOAuthorization&apos;?
- (void)getAuthorizationHintsWithURL:(NSURL *)url responseCode:(NSInteger)responseCode completion:(void (^)(SOAuthorizationHints * _Nullable authorizationHints, NSError * _Nullable error))completion;
                                                                                                            ^~~~~~~~~~~~~~~~~~~~
                                                                                                            SOAuthorization
/Volumes/Data/worker/iOS-13-Build-EWS/build/WebKitBuild/Release-iphoneos/usr/local/include/pal/spi/cocoa/AppSSOSPI.h:78:12: note: &apos;SOAuthorization&apos; declared here
@interface SOAuthorization : NSObject
           ^
In file included from /Volumes/Data/worker/iOS-13-Build-EWS/build/WebKitBuild/Release-iphoneos/DerivedSources/WebKit2/unified-sources/UnifiedSource36-mm.mm:1:
/Volumes/Data/worker/iOS-13-Build-EWS/build/Source/WebKit/UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.mm:134:115: error: cannot initialize a parameter of type &apos;void (^ _Nonnull)(SOAuthorization * _Nullable, NSError * _Nullable)&apos; with an rvalue of type &apos;WTF::BlockPtr&lt;void (SOAuthorizationHints *, NSError *)&gt;::BlockType&apos; (aka &apos;void (^)(SOAuthorizationHints *, NSError *)&apos;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613718</commentid>
    <comment_count>5</comment_count>
      <attachid>389455</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-01-31 22:16:59 -0800</bug_when>
    <thetext>Created attachment 389455
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613778</commentid>
    <comment_count>6</comment_count>
      <attachid>389467</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-01 19:13:02 -0800</bug_when>
    <thetext>Created attachment 389467
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613788</commentid>
    <comment_count>7</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-01 22:26:28 -0800</bug_when>
    <thetext>The API test failures don&apos;t seem to be related.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614354</commentid>
    <comment_count>8</comment_count>
      <attachid>389467</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-02-03 19:10:12 -0800</bug_when>
    <thetext>Comment on attachment 389467
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=389467&amp;action=review

&gt; Source/WebKit/UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.mm:172
&gt; +    // FIXME: &lt;rdar://problem/48909336&gt; Replace the below with AppSSO constants.

It might be nice to resolve this one, soon!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614384</commentid>
    <comment_count>9</comment_count>
      <attachid>389467</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-03 20:58:58 -0800</bug_when>
    <thetext>Comment on attachment 389467
Patch

Thanks Brent for r+ this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614392</commentid>
    <comment_count>10</comment_count>
      <attachid>389467</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-03 21:29:56 -0800</bug_when>
    <thetext>Comment on attachment 389467
Patch

Clearing flags on attachment: 389467

Committed r255660: &lt;https://trac.webkit.org/changeset/255660&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614393</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-03 21:29:58 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614394</commentid>
    <comment_count>12</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-03 21:31:56 -0800</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #8)
&gt; Comment on attachment 389467 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=389467&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.mm:172
&gt; &gt; +    // FIXME: &lt;rdar://problem/48909336&gt; Replace the below with AppSSO constants.
&gt; 
&gt; It might be nice to resolve this one, soon!

Sure thing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389433</attachid>
            <date>2020-01-31 15:55:16 -0800</date>
            <delta_ts>2020-01-31 16:06:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207079-20200131155515.patch</filename>
            <type>text/plain</type>
            <size>74743</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1NDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCAwYjgxN2Ex
OGZiYWQxZjNmMTQ1ZTViMDQ2ZGVlYWQ5NTU2MWQzOWE5Li44NTBkODk1NThiMzI1YWFhZmY2YTk4
MGQwNDJhYjFlYjYyODA1ZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAyMC0wMS0zMSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAg
IFBhc3MgYSBoaW50IGZyb20gdGhlIGV4dGVuc2lvbiB0byBkZWNpZGVQb2xpY3lGb3JTT0F1dGhv
cml6YXRpb25Mb2FkV2l0aEN1cnJlbnRQb2xpY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzA3OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDgy
OTA0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBwYWwvY29jb2EvQXBwU1NPU29mdExpbmsuaDoKKyAgICAgICAgKiBwYWwvY29jb2EvQXBwU1NP
U29mdExpbmsubW06CisgICAgICAgICogcGFsL3NwaS9jb2NvYS9BcHBTU09TUEkuaDoKKyAgICAg
ICAgQWRkcyBtYWNyb3MgZm9yIGNsYXNzZXMgdGhhdCBhcmUgdXNlZCBpbiB0aGUgdGVzdHMuCisK
IDIwMjAtMDEtMzAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBBZGQgV0tOYXZpZ2F0aW9uRGVsZWdhdGUgU1BJIHRvIGRpc2FibGUgVExTIDEu
MCBhbmQgMS4xCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJiMTgyOTE5ODg2YWNmODc2YTU3NjI2ZTY5OGFmYmRlMGU3
OWU4ZGEuLmI4MDI1M2U1N2I2ZDA2MDA0NzhkYzFmNjU3ZDc3OTYyMTFjMTBkYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMjAtMDEtMzEgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFw
cGxlLmNvbT4KKworICAgICAgICBQYXNzIGEgaGludCBmcm9tIHRoZSBleHRlbnNpb24gdG8gZGVj
aWRlUG9saWN5Rm9yU09BdXRob3JpemF0aW9uTG9hZFdpdGhDdXJyZW50UG9saWN5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcwNzkKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQ4MjkwNDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFBhc3MgYSBsb2NhbGl6ZWQgaHVtYW4gcmVhZGFibGUgaGludCBm
cm9tIHRoZSBleHRlbnNpb24gdG8gZGVjaWRlUG9saWN5Rm9yU09BdXRob3JpemF0aW9uTG9hZFdp
dGhDdXJyZW50UG9saWN5LAorICAgICAgICBzdWNoIHRoYXQgY2xpZW50cyBjYW4gZGlzcGxheSBp
dCB0byB0ZWxsIHVzZXJzIHdoYXQgdGhlIGV4dGVuc2lvbiBpcyB0cnlpbmcgdG8gZG8uIEhpbnRz
IGNvdWxkIGJlIHNvbWV0aGluZworICAgICAgICBsaWtlICJTaWduIEluIFdpdGggQXBwbGUiLgor
CisgICAgICAgIENvdmVyZWQgbmV3IHRlc3QgY29udGVudHMgd2l0aGluIGV4aXN0aW5nIHRlc3Rz
LgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6
YXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlv
bi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpTT0F1dGhvcml6
YXRpb25TZXNzaW9uOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OlNPQXV0aG9yaXphdGlvblNl
c3Npb246OmNvbnRpbnVlU3RhcnRBZnRlckdldEF1dGhvcml6YXRpb25IaW50cyk6CisgICAgICAg
IChXZWJLaXQ6OlNPQXV0aG9yaXphdGlvblNlc3Npb246OmNvbnRpbnVlU3RhcnRBZnRlckRlY2lk
ZVBvbGljeSk6CisKIDIwMjAtMDEtMzAgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgbG9nZ2luZyB0byBzaG93IHRoZSBmbG93IG9mIEFwcFNTTwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9BcHBTU09Tb2Z0TGluay5oIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9BcHBTU09Tb2Z0TGluay5oCmluZGV4IGY3NmM1
NjU5YjlhYWU4MGJlMTNmMmFjOWUyMmI2MTRiNzUyZDkxODAuLjIwOTAwZjljMTljZWU1ODlmNzVj
YTBjZWE0Yjc3ZTRhNzJkNTE3YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Y29jb2EvQXBwU1NPU29mdExpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29h
L0FwcFNTT1NvZnRMaW5rLmgKQEAgLTM0LDEwICszNCwxNiBAQCBTT0ZUX0xJTktfRlJBTUVXT1JL
X0ZPUl9IRUFERVIoUEFMLCBBcHBTU08pOwogCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQ
QUwsIFNPQXV0aG9yaXphdGlvbik7CiAKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwg
U09BdXRob3JpemF0aW9uSGludHMpOworCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQ
QUwsIEFwcFNTTywgU09BdXRob3JpemF0aW9uT3B0aW9uVXNlckFjdGlvbkluaXRpYXRlZCwgTlNT
dHJpbmcqKTsKICNkZWZpbmUgU09BdXRob3JpemF0aW9uT3B0aW9uVXNlckFjdGlvbkluaXRpYXRl
ZCBQQUw6OmdldF9BcHBTU09fU09BdXRob3JpemF0aW9uT3B0aW9uVXNlckFjdGlvbkluaXRpYXRl
ZCgpCiAKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQXBwU1NPLCBTT0Vycm9y
RG9tYWluLCBOU0Vycm9yRG9tYWluKTsKICNkZWZpbmUgU09FcnJvckRvbWFpbiBQQUw6OmdldF9B
cHBTU09fU09FcnJvckRvbWFpbigpCiAKK1NPRlRfTElOS19GUkFNRVdPUktfRk9SX0hFQURFUihQ
QUwsIEFwcFNTT0NvcmUpOworCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFNPQXV0
aG9yaXphdGlvbkhpbnRzQ29yZSk7CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9jb2NvYS9BcHBTU09Tb2Z0TGluay5tbSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvY29jb2EvQXBwU1NPU29mdExpbmsubW0KaW5kZXggOGEwYzU1N2QzOGU4ZmNiZmEwMGUwMzgw
MjE3MDJhNTNkMTVlMzlhYy4uZmU5NTI1MzE0MTYyNGZlY2VhNDU1ZGVhNWIzZWM3YmQ4YjAyNjUz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9BcHBTU09Tb2Z0TGlu
ay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL0FwcFNTT1NvZnRMaW5rLm1t
CkBAIC0zNyw4ICszNywxNCBAQCBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9X
SVRIX0VYUE9SVChQQUwsIEFwcFNTTywgU09BdXRob3JpemF0aW9uLCBQQQogU09GVF9MSU5LX0NM
QVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBcHBTU08sIFNPQXV0aG9yaXphdGlvbiwg
UEFMX0VYUE9SVCk7CiAjZW5kaWYKIAorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9F
WFBPUlQoUEFMLCBBcHBTU08sIFNPQXV0aG9yaXphdGlvbkhpbnRzLCBQQUxfRVhQT1JUKTsKKwog
U09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBcHBTU08sIFNP
QXV0aG9yaXphdGlvbk9wdGlvblVzZXJBY3Rpb25Jbml0aWF0ZWQsIE5TU3RyaW5nKiwgUEFMX0VY
UE9SVCk7CiAKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwg
QXBwU1NPLCBTT0Vycm9yRG9tYWluLCBOU0Vycm9yRG9tYWluLCBQQUxfRVhQT1JUKTsKIAorU09G
VF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBcHBT
U09Db3JlLCBQQUxfRVhQT1JUKTsKKworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9F
WFBPUlQoUEFMLCBBcHBTU09Db3JlLCBTT0F1dGhvcml6YXRpb25IaW50c0NvcmUsIFBBTF9FWFBP
UlQpOworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2Nv
Y29hL0FwcFNTT1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQXBwU1NP
U1BJLmgKaW5kZXggZjNjMjQ5NzE3MTMyYWY1ZTY5NmVkNjEzNDRlNmIyODkyMTZjOWQxMi4uNzAy
YWJkYzIwY2NkYzE1Njk1ODNjYjg1NTQ3YTlmNWFkOWRmMjI1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQXBwU1NPU1BJLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvY29jb2EvQXBwU1NPU1BJLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpZiBV
U0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCiAjaW1wb3J0IDxBcHBTU08vQXBwU1NPLmg+CisjaW1w
b3J0IDxBcHBTU09Db3JlL0FwcFNTT0NvcmUuaD4KIAogI2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1NPQXV0aG9yaXphdGlv
blNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlv
bi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLmgKaW5kZXggMmE2MjBjNTE5MzJiZGZmYjM0OWZkZTI3
MTFiMTU1ZWMxMzJiNGU0OS4uMjNlMjcwNzVmZjYzNWUxZGIxZmEyNGFiYzA3YzkxMTQwYjJlODMw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0
aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oCkBAIC00OCw2
ICs0OCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKK2Vu
dW0gY2xhc3MgU09BdXRob3JpemF0aW9uTG9hZFBvbGljeSA6IHVpbnQ4X3Q7CisKIC8vIEEgc2Vz
c2lvbiB3aWxsIG9ubHkgYmUgZXhlY3V0ZWQgb25jZS4KIGNsYXNzIFNPQXV0aG9yaXphdGlvblNl
c3Npb24gOiBwdWJsaWMgUmVmQ291bnRlZDxTT0F1dGhvcml6YXRpb25TZXNzaW9uPiwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPFNPQXV0aG9yaXphdGlvblNlc3Npb24+IHsKIHB1YmxpYzoKQEAgLTEw
Miw2ICsxMDQsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBiZWNvbWVDb21wbGV0ZWQoKTsKICAg
ICB2b2lkIGRpc21pc3NWaWV3Q29udHJvbGxlcigpOworICAgIHZvaWQgY29udGludWVTdGFydEFm
dGVyR2V0QXV0aG9yaXphdGlvbkhpbnRzKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgY29udGlu
dWVTdGFydEFmdGVyRGVjaWRlUG9saWN5KGNvbnN0IFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3km
KTsKIAogICAgIFN0YXRlIG1fc3RhdGUgIHsgU3RhdGU6OklkbGUgfTsKICAgICBXZWFrT2JqQ1B0
cjxTT0F1dGhvcml6YXRpb24gKj4gbV9zb0F1dGhvcml6YXRpb247CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9u
U2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlv
bi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCmluZGV4IGM5NWMzMzYwZmFmYTY1NDFkOWY1Yjk4
YzI5OGRmNTM2ZmUwMTc2ZmYuLmMzNzM0YmVkM2ZiNzgzNTkwOTkyNzM3YmJlMTVlMTdkODMwN2Jj
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXph
dGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCkBAIC00
MSw2ICs0MSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbXBv
cnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbXBvcnQgPHBhbC9jb2NvYS9BcHBTU09T
b2Z0TGluay5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9y
Lmg+CiAKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9M
T0dfSUYobV9wYWdlICYmIG1fcGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIEFwcFNT
TywgIiVwIC0gW0luaXRpYXRpbmdBY3Rpb249JXNdIFNPQXV0aG9yaXphdGlvblNlc3Npb246OiIg
Zm10LCB0aGlzLCB0b1N0cmluZyhtX2FjdGlvbiksICMjX19WQV9BUkdTX18pCkBAIC0xMjgsNDYg
KzEyOSw2NiBAQCB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OnN0YXJ0KCkKIHsKICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDoiKTsKIAotICAgIEFTU0VSVCgobV9zdGF0ZSA9
PSBTdGF0ZTo6SWRsZSB8fCBtX3N0YXRlID09IFN0YXRlOjpXYWl0aW5nKSAmJiBtX3BhZ2UgJiYg
bV9uYXZpZ2F0aW9uQWN0aW9uKTsKKyAgICBBU1NFUlQoKG1fc3RhdGUgPT0gU3RhdGU6OklkbGUg
fHwgbV9zdGF0ZSA9PSBTdGF0ZTo6V2FpdGluZykgJiYgbV9uYXZpZ2F0aW9uQWN0aW9uKTsKICAg
ICBtX3N0YXRlID0gU3RhdGU6OkFjdGl2ZTsKKyAgICBbbV9zb0F1dGhvcml6YXRpb24gZ2V0QXV0
aG9yaXphdGlvbkhpbnRzV2l0aFVSTDptX25hdmlnYXRpb25BY3Rpb24tPnJlcXVlc3QoKS51cmwo
KSByZXNwb25zZUNvZGU6MCBjb21wbGV0aW9uOm1ha2VCbG9ja1B0cihbdGhpcywgd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cigqdGhpcyldIChTT0F1dGhvcml6YXRpb25IaW50cyAqYXV0aG9yaXphdGlv
bkhpbnRzLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJzdGFydDogUmVjZWl2ZSBTT0F1dGhvcml6YXRpb25IaW50cyAoZXJyb3I9JWxkKSIsIGVycm9y
ID8gZXJyb3IuY29kZSA6IDApOwogCi0gICAgbV9wYWdlLT5kZWNpZGVQb2xpY3lGb3JTT0F1dGhv
cml6YXRpb25Mb2FkKGVtcHR5U3RyaW5nKCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKV0gKFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3kgcG9saWN5KSB7Ci0gICAgICAgIGlm
ICghd2Vha1RoaXMpCisgICAgICAgIGlmICghd2Vha1RoaXMgfHwgZXJyb3IgfHwgIWF1dGhvcml6
YXRpb25IaW50cykKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY29udGludWVTdGFydEFm
dGVyR2V0QXV0aG9yaXphdGlvbkhpbnRzKGF1dGhvcml6YXRpb25IaW50cy5sb2NhbGl6ZWRFeHRl
bnNpb25CdW5kbGVEaXNwbGF5TmFtZSk7CisgICAgfSkuZ2V0KCldOworfQogCi0gICAgICAgIGlm
IChwb2xpY3kgPT0gU09BdXRob3JpemF0aW9uTG9hZFBvbGljeTo6SWdub3JlKSB7Ci0gICAgICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDogUmVjZWl2ZSBTT0F1dGhvcml6YXRp
b25Mb2FkUG9saWN5OjpJZ25vcmUiKTsKK3ZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29u
dGludWVTdGFydEFmdGVyR2V0QXV0aG9yaXphdGlvbkhpbnRzKGNvbnN0IFN0cmluZyYgaGludHMp
Cit7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29udGludWVTdGFydEFmdGVyR2V0QXV0
aG9yaXphdGlvbkhpbnRzOiAoaGludHM9JXMpIiwgaGludHMudXRmOCgpLmRhdGEoKSk7CiAKLSAg
ICAgICAgICAgIGZhbGxCYWNrVG9XZWJQYXRoKCk7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3Rh
dGU6OkFjdGl2ZSk7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
cGFnZS0+ZGVjaWRlUG9saWN5Rm9yU09BdXRob3JpemF0aW9uTG9hZChoaW50cywgW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoU09BdXRob3JpemF0aW9uTG9hZFBvbGljeSBw
b2xpY3kpIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQorICAgICAgICBjb250aW51ZVN0YXJ0QWZ0ZXJEZWNpZGVQb2xpY3kocG9saWN5KTsK
KyAgICB9KTsKK30KIAotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDogUmVj
ZWl2ZSBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5OjpBbGxvdyIpOwordm9pZCBTT0F1dGhvcml6
YXRpb25TZXNzaW9uOjpjb250aW51ZVN0YXJ0QWZ0ZXJEZWNpZGVQb2xpY3koY29uc3QgU09BdXRo
b3JpemF0aW9uTG9hZFBvbGljeSYgcG9saWN5KQoreworICAgIGlmIChwb2xpY3kgPT0gU09BdXRo
b3JpemF0aW9uTG9hZFBvbGljeTo6SWdub3JlKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImNvbnRpbnVlU3RhcnRBZnRlckRlY2lkZVBvbGljeTogUmVjZWl2ZSBTT0F1dGhvcml6
YXRpb25Mb2FkUG9saWN5OjpJZ25vcmUiKTsKIAotICAgICAgICBpZiAoIW1fc29BdXRob3JpemF0
aW9uIHx8ICFtX3BhZ2UgfHwgIW1fbmF2aWdhdGlvbkFjdGlvbikKLSAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgZmFsbEJhY2tUb1dlYlBhdGgoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
IAotICAgICAgICAvLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzQ4OTA5MzM2PiBSZXBsYWNlIHRo
ZSBiZWxvdyB3aXRoIEFwcFNTTyBjb25zdGFudHMuCi0gICAgICAgIGF1dG8gaW5pdGlhdG9yT3Jp
Z2luID0gZW1wdHlTdHJpbmcoKTsKLSAgICAgICAgaWYgKG1fbmF2aWdhdGlvbkFjdGlvbi0+c291
cmNlRnJhbWUoKSkKLSAgICAgICAgICAgIGluaXRpYXRvck9yaWdpbiA9IG1fbmF2aWdhdGlvbkFj
dGlvbi0+c291cmNlRnJhbWUoKS0+c2VjdXJpdHlPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpLnRv
U3RyaW5nKCk7Ci0gICAgICAgIGlmIChtX2FjdGlvbiA9PSBJbml0aWF0aW5nQWN0aW9uOjpTdWJG
cmFtZSAmJiBtX3BhZ2UtPm1haW5GcmFtZSgpKQotICAgICAgICAgICAgaW5pdGlhdG9yT3JpZ2lu
ID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3BhZ2UtPm1haW5GcmFtZSgpLT51
cmwoKSktPnRvU3RyaW5nKCk7Ci0gICAgICAgIE5TRGljdGlvbmFyeSAqYXV0aG9yaXphdGlvbk9w
dGlvbnMgPSBAewotICAgICAgICAgICAgU09BdXRob3JpemF0aW9uT3B0aW9uVXNlckFjdGlvbklu
aXRpYXRlZDogQChtX25hdmlnYXRpb25BY3Rpb24tPmlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkp
LAotICAgICAgICAgICAgQCJpbml0aWF0b3JPcmlnaW4iOiAoTlNTdHJpbmcgKilpbml0aWF0b3JP
cmlnaW4sCi0gICAgICAgICAgICBAImluaXRpYXRpbmdBY3Rpb24iOiBAKHN0YXRpY19jYXN0PE5T
SW50ZWdlcj4obV9hY3Rpb24pKQotICAgICAgICB9OwotICAgICAgICBbbV9zb0F1dGhvcml6YXRp
b24gc2V0QXV0aG9yaXphdGlvbk9wdGlvbnM6YXV0aG9yaXphdGlvbk9wdGlvbnNdOworICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVlU3RhcnRBZnRlckRlY2lkZVBvbGljeTogUmVj
ZWl2ZSBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5OjpBbGxvdyIpOworCisgICAgaWYgKCFtX3Nv
QXV0aG9yaXphdGlvbiB8fCAhbV9wYWdlIHx8ICFtX25hdmlnYXRpb25BY3Rpb24pCisgICAgICAg
IHJldHVybjsKKworICAgIC8vIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vNDg5MDkzMzY+IFJlcGxh
Y2UgdGhlIGJlbG93IHdpdGggQXBwU1NPIGNvbnN0YW50cy4KKyAgICBhdXRvIGluaXRpYXRvck9y
aWdpbiA9IGVtcHR5U3RyaW5nKCk7CisgICAgaWYgKG1fbmF2aWdhdGlvbkFjdGlvbi0+c291cmNl
RnJhbWUoKSkKKyAgICAgICAgaW5pdGlhdG9yT3JpZ2luID0gbV9uYXZpZ2F0aW9uQWN0aW9uLT5z
b3VyY2VGcmFtZSgpLT5zZWN1cml0eU9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmco
KTsKKyAgICBpZiAobV9hY3Rpb24gPT0gSW5pdGlhdGluZ0FjdGlvbjo6U3ViRnJhbWUgJiYgbV9w
YWdlLT5tYWluRnJhbWUoKSkKKyAgICAgICAgaW5pdGlhdG9yT3JpZ2luID0gV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShtX3BhZ2UtPm1haW5GcmFtZSgpLT51cmwoKSktPnRvU3RyaW5n
KCk7CisgICAgTlNEaWN0aW9uYXJ5ICphdXRob3JpemF0aW9uT3B0aW9ucyA9IEB7CisgICAgICAg
IFNPQXV0aG9yaXphdGlvbk9wdGlvblVzZXJBY3Rpb25Jbml0aWF0ZWQ6IEAobV9uYXZpZ2F0aW9u
QWN0aW9uLT5pc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKSwKKyAgICAgICAgQCJpbml0aWF0b3JP
cmlnaW4iOiAoTlNTdHJpbmcgKilpbml0aWF0b3JPcmlnaW4sCisgICAgICAgIEAiaW5pdGlhdGlu
Z0FjdGlvbiI6IEAoc3RhdGljX2Nhc3Q8TlNJbnRlZ2VyPihtX2FjdGlvbikpCisgICAgfTsKKyAg
ICBbbV9zb0F1dGhvcml6YXRpb24gc2V0QXV0aG9yaXphdGlvbk9wdGlvbnM6YXV0aG9yaXphdGlv
bk9wdGlvbnNdOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBpZiAoIVtmcm9tV2ViUGFn
ZVByb3h5KCptX3BhZ2UpLlVJRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihf
cHJlc2VudGluZ1ZpZXdDb250cm9sbGVyRm9yV2ViVmlldzopXSkKLSAgICAgICAgICAgIFttX3Nv
QXV0aG9yaXphdGlvbiBzZXRFbmFibGVFbWJlZGRlZEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
cjpOT107CisgICAgaWYgKCFbZnJvbVdlYlBhZ2VQcm94eSgqbV9wYWdlKS5VSURlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3ByZXNlbnRpbmdWaWV3Q29udHJvbGxlckZvcldl
YlZpZXc6KV0pCisgICAgICAgIFttX3NvQXV0aG9yaXphdGlvbiBzZXRFbmFibGVFbWJlZGRlZEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpOT107CiAjZW5kaWYKIAotICAgICAgICBhdXRvICpu
c1JlcXVlc3QgPSBtX25hdmlnYXRpb25BY3Rpb24tPnJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2Vi
Q29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBCb2R5KTsKLSAgICAgICAgW21f
c29BdXRob3JpemF0aW9uIGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6bnNSZXF1ZXN0LlVSTCBo
dHRwSGVhZGVyczpuc1JlcXVlc3QuYWxsSFRUUEhlYWRlckZpZWxkcyBodHRwQm9keTpuc1JlcXVl
c3QuSFRUUEJvZHldOwotICAgIH0pOworICAgIGF1dG8gKm5zUmVxdWVzdCA9IG1fbmF2aWdhdGlv
bkFjdGlvbi0+cmVxdWVzdCgpLm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBv
bGljeTo6VXBkYXRlSFRUUEJvZHkpOworICAgIFttX3NvQXV0aG9yaXphdGlvbiBiZWdpbkF1dGhv
cml6YXRpb25XaXRoVVJMOm5zUmVxdWVzdC5VUkwgaHR0cEhlYWRlcnM6bnNSZXF1ZXN0LmFsbEhU
VFBIZWFkZXJGaWVsZHMgaHR0cEJvZHk6bnNSZXF1ZXN0LkhUVFBCb2R5XTsKIH0KIAogdm9pZCBT
T0F1dGhvcml6YXRpb25TZXNzaW9uOjpmYWxsQmFja1RvV2ViUGF0aCgpCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTgxODFhODhlMWZmYjg0ZTMx
YmExZTQ3YTljZmM0YjM3NjkwNjQ3My4uNjQxNzc3OWJlNjVhZThjNTk0NjA3Yzg3OTJlNTQ2M2Ew
NTIwNzMxNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTAxLTMxICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUGFzcyBhIGhpbnQgZnJvbSB0aGUgZXh0ZW5zaW9uIHRvIGRl
Y2lkZVBvbGljeUZvclNPQXV0aG9yaXphdGlvbkxvYWRXaXRoQ3VycmVudFBvbGljeQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MDc5CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS80ODI5MDQ2ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGVz
dFNPQXV0aG9yaXphdGlvbi5tbToKKyAgICAgICAgKC1bVGVzdFNPQXV0aG9yaXphdGlvbkRlbGVn
YXRlIF93ZWJWaWV3OmRlY2lkZVBvbGljeUZvclNPQXV0aG9yaXphdGlvbkxvYWRXaXRoQ3VycmVu
dFBvbGljeTpmb3JFeHRlbnNpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgIChvdmVy
cmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisKIDIwMjAtMDEtMzAgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCBhbm90aGVyIHNwZWN1bGF0aXZlIHRlc3QgZml4IGFm
dGVyIHIyNTUwNDEKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvVGVzdFNPQXV0aG9yaXphdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvVGVzdFNPQXV0aG9yaXphdGlvbi5tbQppbmRleCA3ZTBhMmMyZGViZjcwODM2
ZDA1ODk4ODQ5YmFlMjdjMmE0NzEyOTZjLi45NzMwYWM1OGZhNmU4ODNiOGE4YTcxYzUzNWExZTEx
YjhkOGQxZTJmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1Rlc3RTT0F1dGhvcml6YXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9UZXN0U09BdXRob3JpemF0aW9uLm1tCkBAIC0xOTIsNyArMTkyLDcgQEAg
LSAoV0tXZWJWaWV3ICopd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjcmVhdGVXZWJWaWV3
V2l0aENvbmZpZ3VyYXRpb246KFdLV2UKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgZGVjaWRlUG9saWN5Rm9yU09BdXRob3JpemF0aW9uTG9hZFdpdGhDdXJyZW50UG9saWN5
OihfV0tTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5KXBvbGljeSBmb3JFeHRlbnNpb246KE5TU3Ry
aW5nICopZXh0ZW5zaW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShfV0tTT0F1dGhvcml6
YXRpb25Mb2FkUG9saWN5IHBvbGljeSkpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBFWFBFQ1Rf
RVEocG9saWN5LCBfV0tTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5QWxsb3cpOwotICAgIEVYUEVD
VF9UUlVFKFtleHRlbnNpb24gaXNFcXVhbDpAIiJdKTsKKyAgICBFWFBFQ1RfVFJVRShbZXh0ZW5z
aW9uIGlzRXF1YWw6QCJUZXN0Il0pOwogICAgIGlmICghc2VsZi5pc0FzeW5jRXhlY3V0aW9uKSB7
CiAgICAgICAgIGlmIChzZWxmLmFsbG93U09BdXRob3JpemF0aW9uTG9hZCkKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHBvbGljeSk7CkBAIC0zMDAsNiArMzAwLDE1IEBAIHN0YXRpYyB2
b2lkIG92ZXJyaWRlQ2FuY2VsQXV0aG9yaXphdGlvbihpZCwgU0VMKQogICAgIGF1dGhvcml6YXRp
b25DYW5jZWxsZWQgPSB0cnVlOwogfQogCit1c2luZyBHZXRBdXRob3JpemF0aW9uSGludHNDYWxs
YmFjayA9IHZvaWQgKF4pKFNPQXV0aG9yaXphdGlvbkhpbnRzICphdXRob3JpemF0aW9uSGludHMs
IE5TRXJyb3IgKmVycm9yKTsKK3N0YXRpYyB2b2lkIG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhp
bnRzV2l0aFVSTChpZCwgU0VMLCBOU1VSTCAqdXJsLCBOU0ludGVnZXIgcmVzcG9uc2VDb2RlLCBH
ZXRBdXRob3JpemF0aW9uSGludHNDYWxsYmFjayBjb21wbGV0aW9uKQoreworICAgIEVYUEVDVF9F
UShyZXNwb25zZUNvZGUsIDBsKTsKKyAgICBhdXRvIHNvQXV0aG9yaXphdGlvbkhpbnRzQ29yZSA9
IGFkb3B0TlMoW1BBTDo6YWxsb2NTT0F1dGhvcml6YXRpb25IaW50c0NvcmVJbnN0YW5jZSgpIGlu
aXRXaXRoTG9jYWxpemVkRXh0ZW5zaW9uQnVuZGxlRGlzcGxheU5hbWU6QCJUZXN0Il0pOworICAg
IGF1dG8gc29BdXRob3JpemF0aW9uSGludHMgPSBhZG9wdE5TKFtQQUw6OmFsbG9jU09BdXRob3Jp
emF0aW9uSGludHNJbnN0YW5jZSgpIGluaXRXaXRoQXV0aG9yaXphdGlvbkhpbnRzQ29yZTpzb0F1
dGhvcml6YXRpb25IaW50c0NvcmUuZ2V0KCldKTsKKyAgICBjb21wbGV0aW9uKHNvQXV0aG9yaXph
dGlvbkhpbnRzLmdldCgpLCBudWxscHRyKTsKK30KKwogI2lmIFBMQVRGT1JNKE1BQykKIHVzaW5n
IE5vdGlmaWNhdGlvbkNhbGxiYWNrID0gdm9pZCAoXikoTlNOb3RpZmljYXRpb24gKm5vdGUpOwog
c3RhdGljIGlkIG92ZXJyaWRlQWRkT2JzZXJ2ZXJGb3JOYW1lKGlkLCBTRUwsIE5TTm90aWZpY2F0
aW9uTmFtZSBuYW1lLCBpZCwgTlNPcGVyYXRpb25RdWV1ZSAqLCBOb3RpZmljYXRpb25DYWxsYmFj
ayBibG9jaykKQEAgLTM4Niw3ICszOTUsOCBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0
LCBOb0ludGVyY2VwdGlvbnMpCiBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNl
cHRpb25FcnJvcikKIHsKICAgICByZXNldFN0YXRlKCk7Ci0gICAgQ2xhc3NNZXRob2RTd2l6emxl
ciBzd2l6emxlcihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5Q
ZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIENs
YXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3Mo
KSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25X
aXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRT
T0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0
aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3Zl
cnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNV
Ukw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2lt
cGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5y
ZXNvdXJjZXMiXTsKIApAQCAtNDA2LDYgKzQxNiw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVk
aXJlY3QsIEludGVyY2VwdGlvbkRvTm90SGFuZGxlKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIg
c3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBl
cmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5z
dGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFz
cygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJy
aWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQ
QUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRp
b25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihv
dmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3
aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rv
cihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhV
UkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1
bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJk
aXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC00MjksNiArNDQwLDcg
QEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uQ2FuY2VsKQogICAg
IENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xh
c3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNv
ZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRp
b25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpn
ZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhv
ZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxl
Y3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsK
KyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXph
dGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3Bv
bnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1
dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVS
TCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhF
eHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJd
OwogCkBAIC00NTIsNiArNDY0LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50
ZXJjZXB0aW9uQ29tcGxldGVXaXRob3V0RGF0YSkKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3
aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJm
b3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8
SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3Rh
bmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3Mo
KSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlk
ZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFM
OjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9u
V2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3Zl
cnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6
emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Io
Z2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCBy
ZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJM
KSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGly
ZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKIApAQCAtNDc1LDYgKzQ4OCw3IEBA
IFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvblVuZXhwZWN0ZWRDb21w
bGV0aW9uKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRo
b3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVS
TDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9y
bUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6
emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdh
dGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJ
bnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNs
YXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0
dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlv
bldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6Omdl
dFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNX
aXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihv
dmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxO
U1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJz
aW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdOwogCkBAIC00OTksNiArNTEzLDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25S
ZWRpcmVjdCwgSW50ZXJjZXB0aW9uU3VjY2VlZDEpCiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBz
d2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVy
Zm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0
PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0
YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNz
KCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBB
TDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlv
bldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92
ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dp
enpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9y
KGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVS
TCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTUzMyw2ICs1NDgsNyBA
QCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25TdWNjZWVkMikKICAg
ICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNs
YXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VD
b2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0
aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6
Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50
ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRo
b2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2Vs
ZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCBy
ZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7
CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6
YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNw
b25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRB
dXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMy
MCwgNTAwKV0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFNPQXV0aG9yaXph
dGlvbkJhc2ljRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKQEAgLTU2Nyw2ICs1ODMsNyBAQCBURVNU
KFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25TdWNjZWVkMykKICAgICBDbGFz
c01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCks
IEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0
aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09B
dXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0
X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6
emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Io
YmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVy
cHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAg
SW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25D
bGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNv
ZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3Jp
emF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAw
KV0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFNPQXV0aG9yaXphdGlvbkRl
bGVnYXRlIGFsbG9jXSBpbml0XSk7CkBAIC02MDIsNiArNjE5LDcgQEAgVEVTVChTT0F1dGhvcml6
YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uU3VjY2VlZDQpCiAgICAgQ2xhc3NNZXRob2RTd2l6
emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Io
Y2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJl
dF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAg
ICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlv
bkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4o
b3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenps
ZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9y
aXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJ
TVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0
aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNl
bGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRp
b246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRz
V2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwi
IHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTYzMiw2ICs2
NTAsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25TdWNjZWVk
V2l0aE90aGVySHR0cFN0YXR1c0NvZGUpCiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxl
cjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1
dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4o
b3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1l
dGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBz
ZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXRE
ZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0
U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhV
Ukw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRl
QmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIg
c3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1
dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwog
CiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBV
UkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9y
eTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTY1Niw2ICs2NzUsNyBAQCBURVNU
KFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25TdWNjZWVkV2l0aENvb2tpZSkK
ICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlv
bkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9u
c2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3Jp
emF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBB
TDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VN
ZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBA
c2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTop
LCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJM
KSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhv
cml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpy
ZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVH
ZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRl
c3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3
aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXMiXTsKIApAQCAtNjkxLDYgKzcxMSw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3Qs
IEludGVyY2VwdGlvblN1Y2NlZWRXaXRoQ29va2llcykKICAgICBDbGFzc01ldGhvZFN3aXp6bGVy
IHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5Q
ZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIElu
c3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xh
c3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVy
cmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMo
UEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0
aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4o
b3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RT
d2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0
b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjop
LCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRo
VVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5C
dW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3Vi
ZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKIApAQCAtNzI3LDYgKzc0OCw3
IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvblN1Y2NlZWRXaXRo
UmVkaXJlY3Rpb25BbmRDb29raWUpCiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEo
UEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhv
cml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3Zl
cnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1ldGhv
ZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxl
Y3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxl
Z2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09B
dXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6
aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVn
aW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dp
enpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhv
cml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnBy
ZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKICAgICBhdXRvIGRlbGVnYXRlID0g
YWRvcHROUyhbW1Rlc3RTT0F1dGhvcml6YXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwpAQCAt
NzY2LDYgKzc4OCw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlv
blN1Y2NlZWRXaXRoRGlmZmVyZW50T3JpZ2luKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dp
enpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZv
cm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJ
TVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFu
Y2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygp
LCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRl
U2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6
OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25X
aXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVy
cmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6
bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rvcihn
ZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwp
KTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC03OTAsNiArODEzLDcgQEAg
VEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uU3VjY2VlZFdpdGhXYWl0
aW5nU2Vzc2lvbikKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNP
QXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldp
dGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBl
cmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIg
c3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERl
bGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAg
ICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRp
b25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVy
czpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6
YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFM
OjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhp
bnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElN
UD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5Q
dHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNl
OkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktp
dEFQSS5yZXNvdXJjZXMiXTsKIApAQCAtODI1LDYgKzg0OSw3IEBAIFRFU1QoU09BdXRob3JpemF0
aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvbkFib3J0ZWRXaXRoV2FpdGluZ1Nlc3Npb24pCiAgICAg
Q2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFz
cygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29k
ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlv
bldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6Omdl
dFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVy
cHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9k
U3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVj
dG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOwor
ICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0
aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9u
c2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0
aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJM
MSA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhF
eHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJd
OwogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTDIgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVd
IFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVj
dG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CkBAIC04NTQsNiArODc5LDcgQEAgVEVT
VChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uU3VjY2VlZFdpdGhBY3RpdmVT
ZXNzaW9uRGlkTW92ZVdpbmRvdykKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQ
QUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9y
aXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVy
cmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9k
U3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVj
dG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVn
YXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1
dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpo
dHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdp
bkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6
emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9y
aXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJl
dF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAg
ICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZv
clJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAi
VGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKIApAQCAtODg1LDYgKzkxMSw3IEBAIFRFU1QoU09B
dXRob3JpemF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvblN1Y2NlZWRUd2ljZSkKICAgICBDbGFz
c01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCks
IEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0
aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09B
dXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0
X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6
emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Io
YmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVy
cHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAg
SW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25D
bGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNv
ZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3Jp
emF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBb
W05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5z
aW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKIApA
QCAtOTE4LDYgKzk0NSw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIEludGVyY2Vw
dGlvblN1Y2NlZWRTdXBwcmVzc0FjdGl2ZVNlc3Npb24pCiAgICAgSW5zdGFuY2VNZXRob2RTd2l6
emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Io
c2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUp
KTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9y
aXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBI
ZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0
aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVy
NChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5jZWxBdXRob3Jp
emF0aW9uKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuY2VsQXV0aG9yaXphdGlv
bikpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI1KFBBTDo6Z2V0U09BdXRo
b3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6
cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRl
R2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiB0
ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIg
d2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3Vy
Y2VzIl07CiAKQEAgLTk1Myw2ICs5ODEsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0
LCBJbnRlcmNlcHRpb25TdWNjZWVkU3VwcHJlc3NXYWl0aW5nU2Vzc2lvbikKICAgICBDbGFzc01l
dGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBz
ZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVS
TCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRo
b3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxl
ciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVn
aW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJl
dF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5z
dGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFz
cygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6
Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0
aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05T
QnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9u
OkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKIApAQCAt
OTk0LDYgKzEwMjMsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRp
b25TdWNjZWVkU0FNTCkKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6Omdl
dFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlv
bldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNh
blBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenps
ZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNl
dERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7
CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6
YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVh
ZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhv
cml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQo
UEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlv
bkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0
PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRh
aW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291
cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdl
YktpdEFQSS5yZXNvdXJjZXMiXTsKIApAQCAtMTAyMiw2ICsxMDUyLDcgQEAgVEVTVChTT0F1dGhv
cml6YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uU3VjY2VlZFNBTUxXaXRoUFNPTikKICAgICBD
bGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNz
KCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2Rl
OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9u
V2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0
U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJw
cmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RT
d2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0
b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWlu
dGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7Cisg
ICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRp
b25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25z
ZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRo
b3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IGJhc2VVUkwg
PSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMyIgd2l0aEV4
dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07
CiAgICAgYXV0byB0ZXN0VVJMID0gVVJMKFVSTCgpLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIp
OwpAQCAtMTA1NSw2ICsxMDg2LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgQXV0
aG9yaXphdGlvbk9wdGlvbnMpCiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFM
OjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6
YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3
aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rv
cihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0
ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRo
b3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0
cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5B
dXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenps
ZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6
YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRf
Y2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRv
cHROUyhbW1Rlc3RTT0F1dGhvcml6YXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwpAQCAtMTA3
NSw2ICsxMTA3LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9u
RGlkTm90SGFuZGxlVHdpY2UpCiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFM
OjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6
YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3
aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rv
cihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0
ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRo
b3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0
cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5B
dXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenps
ZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6
YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRf
Y2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAg
UmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JS
ZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRl
c3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTEwOTYsNiArMTEyOSw3IEBAIFRFU1QoU09B
dXRob3JpemF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvbkNvbXBsZXRlVHdpY2UpCiAgICAgQ2xh
c3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygp
LCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTop
LCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldp
dGhVUkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNP
QXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJl
dF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dp
enpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9y
KGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAg
IEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9u
Q2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VD
b2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9y
aXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0g
W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVu
c2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAK
QEAgLTExMTYsNyArMTE1MCw4IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIEludGVy
Y2VwdGlvbkNvbXBsZXRlVHdpY2UpCiBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBTT0F1
dGhvcml6YXRpb25Mb2FkUG9saWN5SWdub3JlKQogewogICAgIHJlc2V0U3RhdGUoKTsKLSAgICBD
bGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3Mo
KSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25X
aXRoVVJMKSk7CisgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1
dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRo
VVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJm
b3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3
aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRo
b3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJw
cmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAog
ICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJM
Rm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6
QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC0xMTM3LDYgKzExNzIsNyBAQCBURVNU
KFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5QWxsb3dB
c3luYykKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9y
aXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6
cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1B
dXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenps
ZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRl
OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5z
dGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFz
cygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRw
Qm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25X
aXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRT
T0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0
aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3Zl
cnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNV
Ukw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2lt
cGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5y
ZXNvdXJjZXMiXTsKIApAQCAtMTE2Miw3ICsxMTk4LDggQEAgVEVTVChTT0F1dGhvcml6YXRpb25S
ZWRpcmVjdCwgU09BdXRob3JpemF0aW9uTG9hZFBvbGljeUFsbG93QXN5bmMpCiBURVNUKFNPQXV0
aG9yaXphdGlvblJlZGlyZWN0LCBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5SWdub3JlQXN5bmMp
CiB7CiAgICAgcmVzZXRTdGF0ZSgpOwotICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIo
UEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhv
cml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3Zl
cnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBDbGFzc01ldGhvZFN3
aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rv
cihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJw
cmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwor
ICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0
aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9u
c2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0
aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJM
ID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4
dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07
CiAKQEAgLTExODcsNiArMTIyNCw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIElu
dGVyY2VwdGlvblN1Y2NlZWRXaXRoVUkpCiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxl
cjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1
dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4o
b3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1l
dGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBz
ZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXRE
ZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0
U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhV
Ukw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRl
QmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIg
c3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1
dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwog
CiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBV
UkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9y
eTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTEyMjAsNiArMTI1OCw3IEBAIFRF
U1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvbkNhbmNlbFdpdGhVSSkKICAg
ICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNs
YXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VD
b2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0
aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6
Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50
ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRo
b2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2Vs
ZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCBy
ZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7
CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6
YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNw
b25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRB
dXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RV
UkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRo
RXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMi
XTsKIApAQCAtMTI1Miw2ICsxMjkxLDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwg
SW50ZXJjZXB0aW9uRXJyb3JXaXRoVUkpCiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxl
cjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1
dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4o
b3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1l
dGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBz
ZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXRE
ZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0
U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhV
Ukw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRl
QmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIg
c3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1
dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwog
CiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBV
UkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9y
eTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTEyODQsNiArMTMyNCw3IEBAIFRF
U1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvblN1Y2NlZWRTdXBwcmVzc0Fj
dGl2ZVNlc3Npb25XaXRoVUkpCiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIo
UEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCks
IEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5
OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhV
UkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0
aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5jZWxBdXRob3JpemF0aW9uKSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuY2VsQXV0aG9yaXphdGlvbikpOworICAgIEluc3Rh
bmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI1KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3Mo
KSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNv
bXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlv
bkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpA
Imh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTEz
MjMsNiArMTM2NCw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIFNob3dVSVR3aWNl
KQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0
aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNw
b25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhv
cml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIo
UEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCks
IEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5
OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhV
UkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0
aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJM
OnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlk
ZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4g
dGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUi
IHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291
cmNlcyJdOwogCkBAIC0xMzYwLDYgKzE0MDIsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGly
ZWN0LCBOU05vdGlmaWNhdGlvbkNlbnRlcikKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6
bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3Jt
QXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNl
TWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwg
QHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNl
dERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpn
ZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0
aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxl
ciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0
QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWlu
dGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7
CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVd
IFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0
b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKIApAQCAtMTQyMCw2ICsxNDYzLDcgQEAg
VEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwgTm9JbnRlcmNlcHRpb25zU3ViRnJhbWUpCiAgICAg
Q2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFz
cygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29k
ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlv
bldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6Omdl
dFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVy
cHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9k
U3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVj
dG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOwor
ICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0
aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9u
c2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0
aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiBiYXNlVVJM
ID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZTIiIHdpdGhF
eHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJd
OwogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rv
cnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwpAQCAtMTQ0Niw2ICsxNDkwLDcgQEAgVEVT
VChTT0F1dGhvcml6YXRpb25Qb3BVcCwgTm9JbnRlcmNlcHRpb25zV2l0aG91dFVzZXJHZXN0dXJl
KQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0
aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNw
b25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhv
cml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIo
UEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCks
IEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5
OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhV
UkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0
aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJM
OnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlk
ZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIC8vIFRoZSBkZWZhdWx0IHZh
bHVlIG9mIGphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkgaXMgTk8gb24gaU9T
LCBhbmQgWUVTIG9uIG1hY09TLgogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0xNDY2LDYgKzE1MTEsNyBA
QCBURVNUKFNPQXV0aG9yaXphdGlvblBvcFVwLCBJbnRlcmNlcHRpb25FcnJvcikKICAgICBDbGFz
c01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCks
IEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0
aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09B
dXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0
X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6
emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Io
YmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVy
cHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAg
SW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25D
bGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNv
ZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3Jp
emF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IGJhc2VVUkwgPSBb
W05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVu
c2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAg
ICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxG
b3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpA
IlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CkBAIC0xNTAyLDYgKzE1NDgsNyBAQCBURVNUKFNP
QXV0aG9yaXphdGlvblBvcFVwLCBJbnRlcmNlcHRpb25DYW5jZWwpCiAgICAgQ2xhc3NNZXRob2RT
d2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0
b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVy
cHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsK
ICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXph
dGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElN
UD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dp
enpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0
aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNl
TWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwg
QHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBs
ZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhp
bnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiBiYXNlVVJMID0gW1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZTIiIHdpdGhFeHRlbnNpb246QCJo
dG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogICAgIFJldGFp
blB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3Vy
Y2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2Vi
S2l0QVBJLnJlc291cmNlcyJdOwpAQCAtMTUzNSw2ICsxNTgyLDcgQEAgVEVTVChTT0F1dGhvcml6
YXRpb25Qb3BVcCwgSW50ZXJjZXB0aW9uU3VjY2VlZENsb3NlQnlJdHNlbGYpCiAgICAgQ2xhc3NN
ZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBA
c2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCBy
ZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhV
UkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0
aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9j
YXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenps
ZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJl
Z2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnBy
ZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIElu
c3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xh
c3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2Rl
OmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXph
dGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiBiYXNlVVJMID0gW1tO
U0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZTIiIHdpdGhFeHRlbnNp
b246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogICAg
IGF1dG8gdGVzdFVSTCA9IFVSTChVUkwoKSwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKTsKQEAg
LTE1NzEsNiArMTYxOSw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUG9wVXAsIEludGVyY2VwdGlv
blN1Y2NlZWRDbG9zZUJ5UGFyZW50KQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIx
KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRo
b3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92
ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRo
b2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2Vs
ZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVs
ZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNP
QXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJM
Omh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJl
Z2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3
aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRo
b3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJw
cmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAog
ICAgIFJldGFpblB0cjxOU1VSTD4gYmFzZVVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJM
Rm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5
OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKICAgICBhdXRvIHRlc3RVUkwgPSBVUkwoVVJM
KCksICJodHRwOi8vd3d3LmV4YW1wbGUuY29tIik7CkBAIC0xNjA3LDYgKzE2NTYsNyBAQCBURVNU
KFNPQXV0aG9yaXphdGlvblBvcFVwLCBJbnRlcmNlcHRpb25TdWNjZWVkQ2xvc2VCeVdlYktpdCkK
ICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlv
bkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9u
c2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3Jp
emF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBB
TDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VN
ZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBA
c2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTop
LCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJM
KSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhv
cml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpy
ZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVH
ZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IGJh
c2VVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIg
d2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3Vy
Y2VzIl07CiAgICAgYXV0byB0ZXN0VVJMID0gVVJMKFVSTCgpLCAiaHR0cDovL3d3dy5leGFtcGxl
LmNvbSIpOwpAQCAtMTY0Myw2ICsxNjkzLDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwg
SW50ZXJjZXB0aW9uU3VjY2VlZFdpdGhPdGhlckh0dHBTdGF0dXNDb2RlKQogICAgIENsYXNzTWV0
aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNl
bGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJM
KSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhv
cml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVy
IHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdp
bkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0
X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0
YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNz
KCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpj
b21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRp
b25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gYmFzZVVSTCA9IFtbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRoRXh0ZW5zaW9u
OkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKICAgICBS
ZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJl
c291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVz
dFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKQEAgLTE2ODMsNiArMTczNCw3IEBAIFRFU1QoU09BdXRo
b3JpemF0aW9uUG9wVXAsIEludGVyY2VwdGlvblN1Y2NlZWRXaXRoQ29va2llKQogICAgIENsYXNz
TWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwg
QHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRo
VVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1
dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRf
Y2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6
bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rvcihi
ZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJw
cmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJ
bnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNs
YXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29k
ZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6
YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gYmFzZVVSTCA9IFtb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRoRXh0ZW5z
aW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKICAg
ICBhdXRvIHRlc3RVUkwgPSBVUkwoVVJMKCksICJodHRwOi8vd3d3LmV4YW1wbGUuY29tIik7CkBA
IC0xNzE5LDYgKzE3NzEsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblBvcFVwLCBJbnRlcmNlcHRp
b25TdWNjZWVkVHdpY2UpCiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpn
ZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRp
b25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVD
YW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6
bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rvcihz
ZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkp
OwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3Jp
emF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhl
YWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRo
b3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0
KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRp
b25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0
YWluUHRyPE5TVVJMPiBiYXNlVVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNv
dXJjZTpAInNpbXBsZTIiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0
V2ViS2l0QVBJLnJlc291cmNlcyJdOwogICAgIGF1dG8gdGVzdFVSTCA9IFVSTChVUkwoKSwgImh0
dHA6Ly93d3cuZXhhbXBsZS5jb20iKTsKQEAgLTE3NTksNiArMTgxMiw3IEBAIFRFU1QoU09BdXRo
b3JpemF0aW9uUG9wVXAsIEludGVyY2VwdGlvblN1Y2NlZWRTdXBwcmVzc0FjdGl2ZVNlc3Npb24p
CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6
YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJ
TVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3
aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1
dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCks
IEBzZWxlY3RvcihjYW5jZWxBdXRob3JpemF0aW9uKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92
ZXJyaWRlQ2FuY2VsQXV0aG9yaXphdGlvbikpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIg
c3dpenpsZXI1KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1
dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwog
CiAgICAgUmV0YWluUHRyPE5TVVJMPiBiYXNlVVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBV
UkxGb3JSZXNvdXJjZTpAInNpbXBsZTIiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rv
cnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogICAgIGF1dG8gdGVzdFVSTCA9IFVSTChV
UkwoKSwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKTsKQEAgLTE4MjAsNiArMTg3NCw3IEBAIFRF
U1QoU09BdXRob3JpemF0aW9uUG9wVXAsIEludGVyY2VwdGlvblN1Y2NlZWROZXdXaW5kb3dOYXZp
Z2F0aW9uKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRo
b3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVS
TDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9y
bUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6
emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdh
dGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJ
bnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNs
YXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0
dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlv
bldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6Omdl
dFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNX
aXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihv
dmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxO
U1VSTD4gYmFzZVVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJz
aW1wbGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQ
SS5yZXNvdXJjZXMiXTsKICAgICBhdXRvIHRlc3RVUkwgPSBVUkwoVVJMKCksICJodHRwOi8vd3d3
LmV4YW1wbGUuY29tIik7CkBAIC0xODU2LDYgKzE5MTEsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlv
blBvcFVwLCBBdXRob3JpemF0aW9uT3B0aW9ucykKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3
aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJm
b3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8
SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3Rh
bmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3Mo
KSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlk
ZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFM
OjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9u
V2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3Zl
cnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6
emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Io
Z2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCBy
ZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJM
KSk7CiAKICAgICBhdXRvIHRlc3RVUkwgPSBVUkwoVVJMKCksICJodHRwOi8vd3d3LmV4YW1wbGUu
Y29tIik7CiAgICAgYXV0byB0ZXN0SHRtbCA9IGdlbmVyYXRlSHRtbChvcGVuZXJUZW1wbGF0ZSwg
dGVzdFVSTC5zdHJpbmcoKSk7CkBAIC0xODc5LDcgKzE5MzUsOCBAQCBURVNUKFNPQXV0aG9yaXph
dGlvblBvcFVwLCBBdXRob3JpemF0aW9uT3B0aW9ucykKIFRFU1QoU09BdXRob3JpemF0aW9uUG9w
VXAsIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3lJZ25vcmUpCiB7CiAgICAgcmVzZXRTdGF0ZSgp
OwotICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIoUEFMOjpnZXRTT0F1dGhvcml6YXRp
b25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3Bv
bnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9y
aXphdGlvbldpdGhVUkwpKTsKKyAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6
OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXph
dGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlk
ZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dp
enpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9y
KGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVS
TCkpOwogCiAgICAgYXV0byB0ZXN0VVJMID0gVVJMKFVSTCgpLCAiaHR0cDovL3d3dy5leGFtcGxl
LmNvbSIpOwogICAgIGF1dG8gdGVzdEh0bWwgPSBnZW5lcmF0ZUh0bWwob3BlbmVyVGVtcGxhdGUs
IHRlc3RVUkwuc3RyaW5nKCkpOwpAQCAtMTkwNyw2ICsxOTY0LDcgQEAgVEVTVChTT0F1dGhvcml6
YXRpb25Qb3BVcCwgU09BdXRob3JpemF0aW9uTG9hZFBvbGljeUFsbG93QXN5bmMpCiAgICAgQ2xh
c3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygp
LCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTop
LCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldp
dGhVUkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNP
QXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJl
dF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dp
enpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9y
KGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAg
IEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9u
Q2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VD
b2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9y
aXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiBiYXNlVVJMID0g
W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZTIiIHdpdGhFeHRl
bnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwog
ICAgIGF1dG8gdGVzdFVSTCA9IFVSTChVUkwoKSwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKTsK
QEAgLTE5NDIsNyArMjAwMCw4IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUG9wVXAsIFNPQXV0aG9y
aXphdGlvbkxvYWRQb2xpY3lBbGxvd0FzeW5jKQogVEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwg
U09BdXRob3JpemF0aW9uTG9hZFBvbGljeUlnbm9yZUFzeW5jKQogewogICAgIHJlc2V0U3RhdGUo
KTsKLSAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyKFBBTDo6Z2V0U09BdXRob3JpemF0
aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNw
b25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhv
cml6YXRpb25XaXRoVVJMKSk7CisgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFM
OjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6
YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3
aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rv
cihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhV
UkwpKTsKIAogICAgIGF1dG8gdGVzdFVSTCA9IFVSTChVUkwoKSwgImh0dHA6Ly93d3cuZXhhbXBs
ZS5jb20iKTsKICAgICBhdXRvIHRlc3RIdG1sID0gZ2VuZXJhdGVIdG1sKG9wZW5lclRlbXBsYXRl
LCB0ZXN0VVJMLnN0cmluZygpKTsKQEAgLTE5ODYsNiArMjA0NSw3IEBAIFRFU1QoU09BdXRob3Jp
emF0aW9uU3ViRnJhbWUsIE5vSW50ZXJjZXB0aW9uc05vbkFwcGxlRmlyc3RQYXJ0eU1haW5GcmFt
ZSkKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXph
dGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVz
cG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRo
b3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIy
KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFu
Y2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygp
LCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9k
eTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRo
VVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjUoUEFMOjpnZXRTT0F1
dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVS
TDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBhdXRvIHRlc3RIdG1sID0g
Z2VuZXJhdGVIdG1sKHBhcmVudFRlbXBsYXRlLCBVUkwoVVJMKCksICJodHRwOi8vd3d3LmV4YW1w
bGUuY29tIikuc3RyaW5nKCkpOwogCkBAIC0yMDA3LDYgKzIwNjcsNyBAQCBURVNUKFNPQXV0aG9y
aXphdGlvblN1YkZyYW1lLCBJbnRlcmNlcHRpb25FcnJvcikKICAgICBJbnN0YW5jZU1ldGhvZFN3
aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rv
cihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0
ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRo
b3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0
cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5B
dXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0
KFtBS0F1dGhvcml6YXRpb25Db250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKGlzVVJMRnJvbUFw
cGxlT3duZWREb21haW46KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlSXNVUkxGcm9t
QXBwbGVPd25lZERvbWFpbikpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI1
KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRp
b25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0
YWluUHRyPE5TVVJMPiBiYXNlVVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNv
dXJjZTpAInNpbXBsZTIiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0
V2ViS2l0QVBJLnJlc291cmNlcyJdOwogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJHZXRTZXNzaW9uQ29va2llIiB3
aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXMiXTsKQEAgLTIwMzgsNiArMjA5OSw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uU3ViRnJhbWUs
IEludGVyY2VwdGlvblN1Y2Nlc3MpCiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxl
cjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0
YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNz
KCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBC
b2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldp
dGhVUkwpKTsKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChbQUtBdXRob3JpemF0
aW9uQ29udHJvbGxlciBjbGFzc10sIEBzZWxlY3Rvcihpc1VSTEZyb21BcHBsZU93bmVkRG9tYWlu
OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUlzVVJMRnJvbUFwcGxlT3duZWREb21h
aW4pKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNShQQUw6OmdldFNPQXV0
aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJM
OnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlk
ZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIGF1dG8gdGVzdFVSTCA9IFVS
TChVUkwoKSwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKTsKICAgICBhdXRvIHRlc3RIdG1sID0g
Z2VuZXJhdGVIdG1sKHBhcmVudFRlbXBsYXRlLCB0ZXN0VVJMLnN0cmluZygpKTsKQEAgLTIwNjUs
NiArMjEyNyw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uU3ViRnJhbWUsIEludGVyY2VwdGlvblN1
Y2NlZWRXaXRoT3RoZXJIdHRwU3RhdHVzQ29kZSkKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVy
IHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXRE
ZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwog
ICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0
aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRl
cnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3Jp
emF0aW9uV2l0aFVSTCkpOwogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFtBS0F1
dGhvcml6YXRpb25Db250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKGlzVVJMRnJvbUFwcGxlT3du
ZWREb21haW46KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlSXNVUkxGcm9tQXBwbGVP
d25lZERvbWFpbikpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI1KFBBTDo6
Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50
c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRy
PE5TVVJMPiBiYXNlVVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpA
InNpbXBsZTIiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0
QVBJLnJlc291cmNlcyJdOwogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJHZXRTZXNzaW9uQ29va2llIiB3aXRoRXh0
ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsK
QEAgLTIxMDAsNiArMjE2Myw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uU3ViRnJhbWUsIEludGVy
Y2VwdGlvblN1Y2NlZWRXaXRoQ29va2llKQogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dp
enpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVn
YXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAg
SW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25D
bGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpo
dHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRp
b25XaXRoVVJMKSk7CiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjQoW0FLQXV0aG9y
aXphdGlvbkNvbnRyb2xsZXIgY2xhc3NdLCBAc2VsZWN0b3IoaXNVUkxGcm9tQXBwbGVPd25lZERv
bWFpbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVJc1VSTEZyb21BcHBsZU93bmVk
RG9tYWluKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjUoUEFMOjpnZXRT
T0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0
aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3Zl
cnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBhdXRvIHRlc3RVUkwg
PSBVUkwoVVJMKCksICJodHRwOi8vd3d3LmV4YW1wbGUuY29tIik7CiAgICAgYXV0byB0ZXN0SHRt
bCA9IGdlbmVyYXRlSHRtbChwYXJlbnRUZW1wbGF0ZSwgdGVzdFVSTC5zdHJpbmcoKSk7CkBAIC0y
MTI3LDYgKzIxOTEsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblN1YkZyYW1lLCBJbnRlcmNlcHRp
b25TdWNjZXNzVHdpY2UpCiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFM
OjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1l
dGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBz
ZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5Oiks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwp
KTsKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChbQUtBdXRob3JpemF0aW9uQ29u
dHJvbGxlciBjbGFzc10sIEBzZWxlY3Rvcihpc1VSTEZyb21BcHBsZU93bmVkRG9tYWluOiksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUlzVVJMRnJvbUFwcGxlT3duZWREb21haW4pKTsK
KyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNShQQUw6OmdldFNPQXV0aG9yaXph
dGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3Bv
bnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1
dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIGF1dG8gdGVzdFVSTCA9IFVSTChVUkwo
KSwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKTsKICAgICBhdXRvIHRlc3RIdG1sID0gZ2VuZXJh
dGVIdG1sKHBhcmVudFRlbXBsYXRlLCB0ZXN0VVJMLnN0cmluZygpKTsKQEAgLTIxNTksNiArMjIy
NCw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uU3ViRnJhbWUsIEF1dGhvcml6YXRpb25PcHRpb25z
KQogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3Jp
emF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8
SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBz
d2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5B
dXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9j
YXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgQ2xhc3NN
ZXRob2RTd2l6emxlciBzd2l6emxlcjQoW0FLQXV0aG9yaXphdGlvbkNvbnRyb2xsZXIgY2xhc3Nd
LCBAc2VsZWN0b3IoaXNVUkxGcm9tQXBwbGVPd25lZERvbWFpbjopLCByZWludGVycHJldF9jYXN0
PElNUD4ob3ZlcnJpZGVJc1VSTEZyb21BcHBsZU93bmVkRG9tYWluKSk7CisgICAgSW5zdGFuY2VN
ZXRob2RTd2l6emxlciBzd2l6emxlcjUoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBA
c2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxl
dGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGlu
dHNXaXRoVVJMKSk7CiAKICAgICBhdXRvIHRlc3RVUkwgPSBVUkwoVVJMKCksICJodHRwOi8vd3d3
LmV4YW1wbGUuY29tIik7CiAgICAgYXV0byB0ZXN0SHRtbCA9IGdlbmVyYXRlSHRtbChwYXJlbnRU
ZW1wbGF0ZSwgdGVzdFVSTC5zdHJpbmcoKSk7CkBAIC0yMTc2LDcgKzIyNDIsOCBAQCBURVNUKFNP
QXV0aG9yaXphdGlvblN1YkZyYW1lLCBBdXRob3JpemF0aW9uT3B0aW9ucykKIFRFU1QoU09BdXRo
b3JpemF0aW9uU3ViRnJhbWUsIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3lJZ25vcmUpCiB7CiAg
ICAgcmVzZXRTdGF0ZSgpOwotICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIoUEFMOjpn
ZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRp
b25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVD
YW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBDbGFzc01ldGhvZFN3aXp6bGVy
IHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5Q
ZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIElu
c3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xh
c3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2Rl
OmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXph
dGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgYXV0byB0ZXN0VVJMID0gVVJMKFVSTCgpLCAiaHR0
cDovL3d3dy5leGFtcGxlLmNvbSIpOwogICAgIGF1dG8gdGVzdEh0bWwgPSBnZW5lcmF0ZUh0bWwo
cGFyZW50VGVtcGxhdGUsIHRlc3RVUkwuc3RyaW5nKCkpOwpAQCAtMjIwMCw2ICsyMjY3LDcgQEAg
VEVTVChTT0F1dGhvcml6YXRpb25TdWJGcmFtZSwgU09BdXRob3JpemF0aW9uTG9hZFBvbGljeUFs
bG93QXN5bmMpCiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRT
T0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnBy
ZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3
aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rv
cihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50
ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAg
ICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChbQUtBdXRob3JpemF0aW9uQ29udHJvbGxl
ciBjbGFzc10sIEBzZWxlY3Rvcihpc1VSTEZyb21BcHBsZU93bmVkRG9tYWluOiksIHJlaW50ZXJw
cmV0X2Nhc3Q8SU1QPihvdmVycmlkZUlzVVJMRnJvbUFwcGxlT3duZWREb21haW4pKTsKKyAgICBJ
bnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNs
YXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29k
ZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6
YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIGF1dG8gdGVzdFVSTCA9IFVSTChVUkwoKSwgImh0
dHA6Ly93d3cuZXhhbXBsZS5jb20iKTsKICAgICBhdXRvIHRlc3RIdG1sID0gZ2VuZXJhdGVIdG1s
KHBhcmVudFRlbXBsYXRlLCB0ZXN0VVJMLnN0cmluZygpKTsKQEAgLTIyMjQsNyArMjI5Miw4IEBA
IFRFU1QoU09BdXRob3JpemF0aW9uU3ViRnJhbWUsIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3lB
bGxvd0FzeW5jKQogVEVTVChTT0F1dGhvcml6YXRpb25TdWJGcmFtZSwgU09BdXRob3JpemF0aW9u
TG9hZFBvbGljeUlnbm9yZUFzeW5jKQogewogICAgIHJlc2V0U3RhdGUoKTsKLSAgICBDbGFzc01l
dGhvZFN3aXp6bGVyIHN3aXp6bGVyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNl
bGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJM
KSk7CisgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6
YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJl
c3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0
aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVy
MihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0
aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIGF1
dG8gdGVzdFVSTCA9IFVSTChVUkwoKSwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKTsKICAgICBh
dXRvIHRlc3RIdG1sID0gZ2VuZXJhdGVIdG1sKHBhcmVudFRlbXBsYXRlLCB0ZXN0VVJMLnN0cmlu
ZygpKTsKQEAgLTIyNDksNiArMjMxOCw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uU3ViRnJhbWUs
IEludGVyY2VwdGlvbkVycm9yV2l0aFJlZmVycmVyKQogICAgIEluc3RhbmNlTWV0aG9kU3dpenps
ZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNl
dERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7
CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6
YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVh
ZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhv
cml6YXRpb25XaXRoVVJMKSk7CiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjQoW0FL
QXV0aG9yaXphdGlvbkNvbnRyb2xsZXIgY2xhc3NdLCBAc2VsZWN0b3IoaXNVUkxGcm9tQXBwbGVP
d25lZERvbWFpbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVJc1VSTEZyb21BcHBs
ZU93bmVkRG9tYWluKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjUoUEFM
OjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhp
bnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElN
UD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBUQ1BTZXJ2
ZXIgc2VydmVyKFtwYXJlbnRIdG1sID0gZ2VuZXJhdGVIdG1sKHBhcmVudFRlbXBsYXRlLCAic2lt
cGxlLmh0bWwiKSwgZnJhbWVIdG1sID0gZ2VuZXJhdGVIdG1sKGlmcmFtZVRlbXBsYXRlLCAicGFy
ZW50LnBvc3RNZXNzYWdlKCdSZWZlcnJlcjogJyArIGRvY3VtZW50LnJlZmVycmVyLCAnKicpOyIp
XSAoaW50IHNvY2tldCkgewogICAgICAgICBOU1N0cmluZyAqZmlyc3RSZXNwb25zZSA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OgpAQCAtMjI5NCw2ICsyMzY0LDcgQEAgVEVTVChTT0F1dGhv
cml6YXRpb25TdWJGcmFtZSwgSW50ZXJjZXB0aW9uRXJyb3JNZXNzYWdlT3JkZXIpCiAgICAgSW5z
dGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFz
cygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJy
aWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQ
QUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRp
b25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihv
dmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBDbGFzc01ldGhvZFN3aXp6
bGVyIHN3aXp6bGVyNChbQUtBdXRob3JpemF0aW9uQ29udHJvbGxlciBjbGFzc10sIEBzZWxlY3Rv
cihpc1VSTEZyb21BcHBsZU93bmVkRG9tYWluOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVy
cmlkZUlzVVJMRnJvbUFwcGxlT3duZWREb21haW4pKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6
bGVyIHN3aXp6bGVyNShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rvcihn
ZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwp
KTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gYmFzZVVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGly
ZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKICAgICBSZXRhaW5QdHI8TlNVUkw+
IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiR2V0U2Vz
c2lvbkNvb2tpZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJL
aXRBUEkucmVzb3VyY2VzIl07CkBAIC0yMzIwLDYgKzIzOTEsNyBAQCBURVNUKFNPQXV0aG9yaXph
dGlvblN1YkZyYW1lLCBJbnRlcmNlcHRpb25TdWNjZXNzTWVzc2FnZU9yZGVyKQogICAgIEluc3Rh
bmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3Mo
KSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlk
ZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFM
OjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9u
V2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3Zl
cnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgQ2xhc3NNZXRob2RTd2l6emxl
ciBzd2l6emxlcjQoW0FLQXV0aG9yaXphdGlvbkNvbnRyb2xsZXIgY2xhc3NdLCBAc2VsZWN0b3Io
aXNVUkxGcm9tQXBwbGVPd25lZERvbWFpbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVJc1VSTEZyb21BcHBsZU93bmVkRG9tYWluKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxl
ciBzd2l6emxlcjUoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0
QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWlu
dGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7
CiAKICAgICBhdXRvIHRlc3RVUkwgPSBVUkwoVVJMKCksICJodHRwOi8vd3d3LmV4YW1wbGUuY29t
Iik7CiAgICAgYXV0byB0ZXN0SHRtbCA9IGdlbmVyYXRlSHRtbChwYXJlbnRUZW1wbGF0ZSwgdGVz
dFVSTC5zdHJpbmcoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389435</attachid>
            <date>2020-01-31 16:06:08 -0800</date>
            <delta_ts>2020-01-31 22:16:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207079-20200131160607.patch</filename>
            <type>text/plain</type>
            <size>76290</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1NDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCAwYjgxN2Ex
OGZiYWQxZjNmMTQ1ZTViMDQ2ZGVlYWQ5NTU2MWQzOWE5Li44NTBkODk1NThiMzI1YWFhZmY2YTk4
MGQwNDJhYjFlYjYyODA1ZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAyMC0wMS0zMSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAg
IFBhc3MgYSBoaW50IGZyb20gdGhlIGV4dGVuc2lvbiB0byBkZWNpZGVQb2xpY3lGb3JTT0F1dGhv
cml6YXRpb25Mb2FkV2l0aEN1cnJlbnRQb2xpY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzA3OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDgy
OTA0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBwYWwvY29jb2EvQXBwU1NPU29mdExpbmsuaDoKKyAgICAgICAgKiBwYWwvY29jb2EvQXBwU1NP
U29mdExpbmsubW06CisgICAgICAgICogcGFsL3NwaS9jb2NvYS9BcHBTU09TUEkuaDoKKyAgICAg
ICAgQWRkcyBtYWNyb3MgZm9yIGNsYXNzZXMgdGhhdCBhcmUgdXNlZCBpbiB0aGUgdGVzdHMuCisK
IDIwMjAtMDEtMzAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBBZGQgV0tOYXZpZ2F0aW9uRGVsZWdhdGUgU1BJIHRvIGRpc2FibGUgVExTIDEu
MCBhbmQgMS4xCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJiMTgyOTE5ODg2YWNmODc2YTU3NjI2ZTY5OGFmYmRlMGU3
OWU4ZGEuLmI4MDI1M2U1N2I2ZDA2MDA0NzhkYzFmNjU3ZDc3OTYyMTFjMTBkYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMjAtMDEtMzEgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFw
cGxlLmNvbT4KKworICAgICAgICBQYXNzIGEgaGludCBmcm9tIHRoZSBleHRlbnNpb24gdG8gZGVj
aWRlUG9saWN5Rm9yU09BdXRob3JpemF0aW9uTG9hZFdpdGhDdXJyZW50UG9saWN5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcwNzkKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQ4MjkwNDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFBhc3MgYSBsb2NhbGl6ZWQgaHVtYW4gcmVhZGFibGUgaGludCBm
cm9tIHRoZSBleHRlbnNpb24gdG8gZGVjaWRlUG9saWN5Rm9yU09BdXRob3JpemF0aW9uTG9hZFdp
dGhDdXJyZW50UG9saWN5LAorICAgICAgICBzdWNoIHRoYXQgY2xpZW50cyBjYW4gZGlzcGxheSBp
dCB0byB0ZWxsIHVzZXJzIHdoYXQgdGhlIGV4dGVuc2lvbiBpcyB0cnlpbmcgdG8gZG8uIEhpbnRz
IGNvdWxkIGJlIHNvbWV0aGluZworICAgICAgICBsaWtlICJTaWduIEluIFdpdGggQXBwbGUiLgor
CisgICAgICAgIENvdmVyZWQgbmV3IHRlc3QgY29udGVudHMgd2l0aGluIGV4aXN0aW5nIHRlc3Rz
LgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6
YXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlv
bi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpTT0F1dGhvcml6
YXRpb25TZXNzaW9uOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OlNPQXV0aG9yaXphdGlvblNl
c3Npb246OmNvbnRpbnVlU3RhcnRBZnRlckdldEF1dGhvcml6YXRpb25IaW50cyk6CisgICAgICAg
IChXZWJLaXQ6OlNPQXV0aG9yaXphdGlvblNlc3Npb246OmNvbnRpbnVlU3RhcnRBZnRlckRlY2lk
ZVBvbGljeSk6CisKIDIwMjAtMDEtMzAgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgbG9nZ2luZyB0byBzaG93IHRoZSBmbG93IG9mIEFwcFNTTwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9BcHBTU09Tb2Z0TGluay5oIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9BcHBTU09Tb2Z0TGluay5oCmluZGV4IGY3NmM1
NjU5YjlhYWU4MGJlMTNmMmFjOWUyMmI2MTRiNzUyZDkxODAuLjIwOTAwZjljMTljZWU1ODlmNzVj
YTBjZWE0Yjc3ZTRhNzJkNTE3YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Y29jb2EvQXBwU1NPU29mdExpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29h
L0FwcFNTT1NvZnRMaW5rLmgKQEAgLTM0LDEwICszNCwxNiBAQCBTT0ZUX0xJTktfRlJBTUVXT1JL
X0ZPUl9IRUFERVIoUEFMLCBBcHBTU08pOwogCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQ
QUwsIFNPQXV0aG9yaXphdGlvbik7CiAKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwg
U09BdXRob3JpemF0aW9uSGludHMpOworCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQ
QUwsIEFwcFNTTywgU09BdXRob3JpemF0aW9uT3B0aW9uVXNlckFjdGlvbkluaXRpYXRlZCwgTlNT
dHJpbmcqKTsKICNkZWZpbmUgU09BdXRob3JpemF0aW9uT3B0aW9uVXNlckFjdGlvbkluaXRpYXRl
ZCBQQUw6OmdldF9BcHBTU09fU09BdXRob3JpemF0aW9uT3B0aW9uVXNlckFjdGlvbkluaXRpYXRl
ZCgpCiAKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQXBwU1NPLCBTT0Vycm9y
RG9tYWluLCBOU0Vycm9yRG9tYWluKTsKICNkZWZpbmUgU09FcnJvckRvbWFpbiBQQUw6OmdldF9B
cHBTU09fU09FcnJvckRvbWFpbigpCiAKK1NPRlRfTElOS19GUkFNRVdPUktfRk9SX0hFQURFUihQ
QUwsIEFwcFNTT0NvcmUpOworCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFNPQXV0
aG9yaXphdGlvbkhpbnRzQ29yZSk7CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9jb2NvYS9BcHBTU09Tb2Z0TGluay5tbSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvY29jb2EvQXBwU1NPU29mdExpbmsubW0KaW5kZXggOGEwYzU1N2QzOGU4ZmNiZmEwMGUwMzgw
MjE3MDJhNTNkMTVlMzlhYy4uZmU5NTI1MzE0MTYyNGZlY2VhNDU1ZGVhNWIzZWM3YmQ4YjAyNjUz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9BcHBTU09Tb2Z0TGlu
ay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL0FwcFNTT1NvZnRMaW5rLm1t
CkBAIC0zNyw4ICszNywxNCBAQCBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9X
SVRIX0VYUE9SVChQQUwsIEFwcFNTTywgU09BdXRob3JpemF0aW9uLCBQQQogU09GVF9MSU5LX0NM
QVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBcHBTU08sIFNPQXV0aG9yaXphdGlvbiwg
UEFMX0VYUE9SVCk7CiAjZW5kaWYKIAorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9F
WFBPUlQoUEFMLCBBcHBTU08sIFNPQXV0aG9yaXphdGlvbkhpbnRzLCBQQUxfRVhQT1JUKTsKKwog
U09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBcHBTU08sIFNP
QXV0aG9yaXphdGlvbk9wdGlvblVzZXJBY3Rpb25Jbml0aWF0ZWQsIE5TU3RyaW5nKiwgUEFMX0VY
UE9SVCk7CiAKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwg
QXBwU1NPLCBTT0Vycm9yRG9tYWluLCBOU0Vycm9yRG9tYWluLCBQQUxfRVhQT1JUKTsKIAorU09G
VF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBcHBT
U09Db3JlLCBQQUxfRVhQT1JUKTsKKworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9F
WFBPUlQoUEFMLCBBcHBTU09Db3JlLCBTT0F1dGhvcml6YXRpb25IaW50c0NvcmUsIFBBTF9FWFBP
UlQpOworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2Nv
Y29hL0FwcFNTT1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQXBwU1NP
U1BJLmgKaW5kZXggZjNjMjQ5NzE3MTMyYWY1ZTY5NmVkNjEzNDRlNmIyODkyMTZjOWQxMi4uNDdm
MTViYTNiMzNmYzRlYjQ5MjY1OGE0OGY1N2RlOTAwZDE5MGVlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQXBwU1NPU1BJLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvY29jb2EvQXBwU1NPU1BJLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpZiBV
U0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCiAjaW1wb3J0IDxBcHBTU08vQXBwU1NPLmg+CisjaW1w
b3J0IDxBcHBTU09Db3JlL0FwcFNTT0NvcmUuaD4KIAogI2Vsc2UKIApAQCAtNzksNiArODAsNyBA
QCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBTT0F1dGhvcml6YXRpb25Jbml0aWF0aW5nQWN0
aW9uKSB7CiBAcHJvcGVydHkgKHJldGFpbiwgbnVsbGFibGUpIGRpc3BhdGNoX3F1ZXVlX3QgZGVs
ZWdhdGVEaXNwYXRjaFF1ZXVlOwogQHByb3BlcnR5IChjb3B5LCBub25hdG9taWMpIE5TRGljdGlv
bmFyeSAqYXV0aG9yaXphdGlvbk9wdGlvbnM7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBl
bmFibGVFbWJlZGRlZEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjsKKy0gKHZvaWQpZ2V0QXV0
aG9yaXphdGlvbkhpbnRzV2l0aFVSTDooTlNVUkwgKil1cmwgcmVzcG9uc2VDb2RlOihOU0ludGVn
ZXIpcmVzcG9uc2VDb2RlIGNvbXBsZXRpb246KHZvaWQgKF4pKFNPQXV0aG9yaXphdGlvbkhpbnRz
ICogX051bGxhYmxlIGF1dGhvcml6YXRpb25IaW50cywgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJv
cikpY29tcGxldGlvbjsKICsgKEJPT0wpY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOihO
U1VSTCAqKXVybCByZXNwb25zZUNvZGU6KE5TSW50ZWdlcilyZXNwb25zZUNvZGU7CiArIChCT09M
KWNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDooTlNVUkwgKil1cmwgcmVzcG9uc2VDb2Rl
OihOU0ludGVnZXIpcmVzcG9uc2VDb2RlIHVzZUludGVybmFsRXh0ZW5zaW9uczooQk9PTCl1c2VJ
bnRlcm5hbEV4dGVuc2lvbnM7CiAtICh2b2lkKWJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6KE5T
VVJMICopdXJsIGh0dHBIZWFkZXJzOihOU0RpY3Rpb25hcnkgPE5TU3RyaW5nICosIE5TU3RyaW5n
ICo+ICopaHR0cEhlYWRlcnMgaHR0cEJvZHk6KE5TRGF0YSAqKWh0dHBCb2R5OwpAQCAtODcsNiAr
ODksMjIgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgU09BdXRob3JpemF0aW9uSW5pdGlh
dGluZ0FjdGlvbikgewogLSAodm9pZCljYW5jZWxBdXRob3JpemF0aW9uOwogQGVuZAogCitAaW50
ZXJmYWNlIFNPQXV0aG9yaXphdGlvbkhpbnRzQ29yZSA6IE5TT2JqZWN0IDxOU1NlY3VyZUNvZGlu
Zz4KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTG9jYWxpemVkRXh0ZW5zaW9uQnVuZGxlRGlz
cGxheU5hbWU6KE5TU3RyaW5nICopbG9jYWxpemVkRXh0ZW5zaW9uQnVuZGxlRGlzcGxheU5hbWU7
CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKmxvY2FsaXplZEV4
dGVuc2lvbkJ1bmRsZURpc3BsYXlOYW1lOworCitAZW5kCisKK0BpbnRlcmZhY2UgU09BdXRob3Jp
emF0aW9uSGludHMgOiBOU09iamVjdAorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhBdXRob3Jp
emF0aW9uSGludHNDb3JlOihTT0F1dGhvcml6YXRpb25IaW50c0NvcmUgKilhdXRob3JpemF0aW9u
SGludHNDb3JlOworCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICps
b2NhbGl6ZWRFeHRlbnNpb25CdW5kbGVEaXNwbGF5TmFtZTsKKworQGVuZAorCiBOU19BU1NVTUVf
Tk9OTlVMTF9FTkQKIAogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRo
b3JpemF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRo
b3JpemF0aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24uaAppbmRleCAyYTYyMGM1MTkzMmJkZmZi
MzQ5ZmRlMjcxMWIxNTVlYzEzMmI0ZTQ5Li4yM2UyNzA3NWZmNjM1ZTFkYjFmYTI0YWJjMDdjOTEx
NDBiMmU4MzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1
dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLmgK
QEAgLTQ4LDYgKzQ4LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2VQcm94
eTsKIAorZW51bSBjbGFzcyBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5IDogdWludDhfdDsKKwog
Ly8gQSBzZXNzaW9uIHdpbGwgb25seSBiZSBleGVjdXRlZCBvbmNlLgogY2xhc3MgU09BdXRob3Jp
emF0aW9uU2Vzc2lvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFNPQXV0aG9yaXphdGlvblNlc3Npb24+
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U09BdXRob3JpemF0aW9uU2Vzc2lvbj4gewogcHVibGlj
OgpAQCAtMTAyLDYgKzEwNCw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGJlY29tZUNvbXBsZXRl
ZCgpOwogICAgIHZvaWQgZGlzbWlzc1ZpZXdDb250cm9sbGVyKCk7CisgICAgdm9pZCBjb250aW51
ZVN0YXJ0QWZ0ZXJHZXRBdXRob3JpemF0aW9uSGludHMoY29uc3QgU3RyaW5nJik7CisgICAgdm9p
ZCBjb250aW51ZVN0YXJ0QWZ0ZXJEZWNpZGVQb2xpY3koY29uc3QgU09BdXRob3JpemF0aW9uTG9h
ZFBvbGljeSYpOwogCiAgICAgU3RhdGUgbV9zdGF0ZSAgeyBTdGF0ZTo6SWRsZSB9OwogICAgIFdl
YWtPYmpDUHRyPFNPQXV0aG9yaXphdGlvbiAqPiBtX3NvQXV0aG9yaXphdGlvbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhv
cml6YXRpb25TZXNzaW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRo
b3JpemF0aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KaW5kZXggYzk1YzMzNjBmYWZhNjU0
MWQ5ZjViOThjMjk4ZGY1MzZmZTAxNzZmZi4uYzM3MzRiZWQzZmI3ODM1OTA5OTI3MzdiYmUxNWUx
N2Q4MzA3YmMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09B
dXRob3JpemF0aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24u
bW0KQEAgLTQxLDYgKzQxLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2ltcG9ydCA8cGFsL2NvY29h
L0FwcFNTT1NvZnRMaW5rLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0
Zi9WZWN0b3IuaD4KIAogI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBS
RUxFQVNFX0xPR19JRihtX3BhZ2UgJiYgbV9wYWdlLT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQo
KSwgQXBwU1NPLCAiJXAgLSBbSW5pdGlhdGluZ0FjdGlvbj0lc10gU09BdXRob3JpemF0aW9uU2Vz
c2lvbjo6IiBmbXQsIHRoaXMsIHRvU3RyaW5nKG1fYWN0aW9uKSwgIyNfX1ZBX0FSR1NfXykKQEAg
LTEyOCw0NiArMTI5LDY2IEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6c3RhcnQoKQog
ewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0OiIpOwogCi0gICAgQVNTRVJUKCht
X3N0YXRlID09IFN0YXRlOjpJZGxlIHx8IG1fc3RhdGUgPT0gU3RhdGU6OldhaXRpbmcpICYmIG1f
cGFnZSAmJiBtX25hdmlnYXRpb25BY3Rpb24pOworICAgIEFTU0VSVCgobV9zdGF0ZSA9PSBTdGF0
ZTo6SWRsZSB8fCBtX3N0YXRlID09IFN0YXRlOjpXYWl0aW5nKSAmJiBtX25hdmlnYXRpb25BY3Rp
b24pOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6QWN0aXZlOworICAgIFttX3NvQXV0aG9yaXphdGlv
biBnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOm1fbmF2aWdhdGlvbkFjdGlvbi0+cmVxdWVz
dCgpLnVybCgpIHJlc3BvbnNlQ29kZTowIGNvbXBsZXRpb246bWFrZUJsb2NrUHRyKFt0aGlzLCB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKFNPQXV0aG9yaXphdGlvbkhpbnRzICphdXRo
b3JpemF0aW9uSGludHMsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoInN0YXJ0OiBSZWNlaXZlIFNPQXV0aG9yaXphdGlvbkhpbnRzIChlcnJvcj0lbGQp
IiwgZXJyb3IgPyBlcnJvci5jb2RlIDogMCk7CiAKLSAgICBtX3BhZ2UtPmRlY2lkZVBvbGljeUZv
clNPQXV0aG9yaXphdGlvbkxvYWQoZW1wdHlTdHJpbmcoKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFr
ZVdlYWtQdHIoKnRoaXMpXSAoU09BdXRob3JpemF0aW9uTG9hZFBvbGljeSBwb2xpY3kpIHsKLSAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCBlcnJvciB8fCAh
YXV0aG9yaXphdGlvbkhpbnRzKQogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjb250aW51
ZVN0YXJ0QWZ0ZXJHZXRBdXRob3JpemF0aW9uSGludHMoYXV0aG9yaXphdGlvbkhpbnRzLmxvY2Fs
aXplZEV4dGVuc2lvbkJ1bmRsZURpc3BsYXlOYW1lKTsKKyAgICB9KS5nZXQoKV07Cit9CiAKLSAg
ICAgICAgaWYgKHBvbGljeSA9PSBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5OjpJZ25vcmUpIHsK
LSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0OiBSZWNlaXZlIFNPQXV0
aG9yaXphdGlvbkxvYWRQb2xpY3k6Oklnbm9yZSIpOwordm9pZCBTT0F1dGhvcml6YXRpb25TZXNz
aW9uOjpjb250aW51ZVN0YXJ0QWZ0ZXJHZXRBdXRob3JpemF0aW9uSGludHMoY29uc3QgU3RyaW5n
JiBoaW50cykKK3sKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjb250aW51ZVN0YXJ0QWZ0
ZXJHZXRBdXRob3JpemF0aW9uSGludHM6IChoaW50cz0lcykiLCBoaW50cy51dGY4KCkuZGF0YSgp
KTsKIAotICAgICAgICAgICAgZmFsbEJhY2tUb1dlYlBhdGgoKTsKKyAgICBBU1NFUlQobV9zdGF0
ZSA9PSBTdGF0ZTo6QWN0aXZlKTsKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9wYWdlLT5kZWNpZGVQb2xpY3lGb3JTT0F1dGhvcml6YXRpb25Mb2FkKGhpbnRzLCBb
dGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChTT0F1dGhvcml6YXRpb25Mb2Fk
UG9saWN5IHBvbGljeSkgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9CisgICAgICAgIGNvbnRpbnVlU3RhcnRBZnRlckRlY2lkZVBvbGljeShw
b2xpY3kpOworICAgIH0pOworfQogCi0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0
YXJ0OiBSZWNlaXZlIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3k6OkFsbG93Iik7Cit2b2lkIFNP
QXV0aG9yaXphdGlvblNlc3Npb246OmNvbnRpbnVlU3RhcnRBZnRlckRlY2lkZVBvbGljeShjb25z
dCBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5JiBwb2xpY3kpCit7CisgICAgaWYgKHBvbGljeSA9
PSBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5OjpJZ25vcmUpIHsKKyAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiY29udGludWVTdGFydEFmdGVyRGVjaWRlUG9saWN5OiBSZWNlaXZlIFNP
QXV0aG9yaXphdGlvbkxvYWRQb2xpY3k6Oklnbm9yZSIpOwogCi0gICAgICAgIGlmICghbV9zb0F1
dGhvcml6YXRpb24gfHwgIW1fcGFnZSB8fCAhbV9uYXZpZ2F0aW9uQWN0aW9uKQotICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBmYWxsQmFja1RvV2ViUGF0aCgpOworICAgICAgICByZXR1cm47
CisgICAgfQogCi0gICAgICAgIC8vIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vNDg5MDkzMzY+IFJl
cGxhY2UgdGhlIGJlbG93IHdpdGggQXBwU1NPIGNvbnN0YW50cy4KLSAgICAgICAgYXV0byBpbml0
aWF0b3JPcmlnaW4gPSBlbXB0eVN0cmluZygpOwotICAgICAgICBpZiAobV9uYXZpZ2F0aW9uQWN0
aW9uLT5zb3VyY2VGcmFtZSgpKQotICAgICAgICAgICAgaW5pdGlhdG9yT3JpZ2luID0gbV9uYXZp
Z2F0aW9uQWN0aW9uLT5zb3VyY2VGcmFtZSgpLT5zZWN1cml0eU9yaWdpbigpLnNlY3VyaXR5T3Jp
Z2luKCkudG9TdHJpbmcoKTsKLSAgICAgICAgaWYgKG1fYWN0aW9uID09IEluaXRpYXRpbmdBY3Rp
b246OlN1YkZyYW1lICYmIG1fcGFnZS0+bWFpbkZyYW1lKCkpCi0gICAgICAgICAgICBpbml0aWF0
b3JPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fcGFnZS0+bWFpbkZy
YW1lKCktPnVybCgpKS0+dG9TdHJpbmcoKTsKLSAgICAgICAgTlNEaWN0aW9uYXJ5ICphdXRob3Jp
emF0aW9uT3B0aW9ucyA9IEB7Ci0gICAgICAgICAgICBTT0F1dGhvcml6YXRpb25PcHRpb25Vc2Vy
QWN0aW9uSW5pdGlhdGVkOiBAKG1fbmF2aWdhdGlvbkFjdGlvbi0+aXNQcm9jZXNzaW5nVXNlckdl
c3R1cmUoKSksCi0gICAgICAgICAgICBAImluaXRpYXRvck9yaWdpbiI6IChOU1N0cmluZyAqKWlu
aXRpYXRvck9yaWdpbiwKLSAgICAgICAgICAgIEAiaW5pdGlhdGluZ0FjdGlvbiI6IEAoc3RhdGlj
X2Nhc3Q8TlNJbnRlZ2VyPihtX2FjdGlvbikpCi0gICAgICAgIH07Ci0gICAgICAgIFttX3NvQXV0
aG9yaXphdGlvbiBzZXRBdXRob3JpemF0aW9uT3B0aW9uczphdXRob3JpemF0aW9uT3B0aW9uc107
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29udGludWVTdGFydEFmdGVyRGVjaWRlUG9s
aWN5OiBSZWNlaXZlIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3k6OkFsbG93Iik7CisKKyAgICBp
ZiAoIW1fc29BdXRob3JpemF0aW9uIHx8ICFtX3BhZ2UgfHwgIW1fbmF2aWdhdGlvbkFjdGlvbikK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS80ODkwOTMz
Nj4gUmVwbGFjZSB0aGUgYmVsb3cgd2l0aCBBcHBTU08gY29uc3RhbnRzLgorICAgIGF1dG8gaW5p
dGlhdG9yT3JpZ2luID0gZW1wdHlTdHJpbmcoKTsKKyAgICBpZiAobV9uYXZpZ2F0aW9uQWN0aW9u
LT5zb3VyY2VGcmFtZSgpKQorICAgICAgICBpbml0aWF0b3JPcmlnaW4gPSBtX25hdmlnYXRpb25B
Y3Rpb24tPnNvdXJjZUZyYW1lKCktPnNlY3VyaXR5T3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS50
b1N0cmluZygpOworICAgIGlmIChtX2FjdGlvbiA9PSBJbml0aWF0aW5nQWN0aW9uOjpTdWJGcmFt
ZSAmJiBtX3BhZ2UtPm1haW5GcmFtZSgpKQorICAgICAgICBpbml0aWF0b3JPcmlnaW4gPSBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fcGFnZS0+bWFpbkZyYW1lKCktPnVybCgpKS0+
dG9TdHJpbmcoKTsKKyAgICBOU0RpY3Rpb25hcnkgKmF1dGhvcml6YXRpb25PcHRpb25zID0gQHsK
KyAgICAgICAgU09BdXRob3JpemF0aW9uT3B0aW9uVXNlckFjdGlvbkluaXRpYXRlZDogQChtX25h
dmlnYXRpb25BY3Rpb24tPmlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpLAorICAgICAgICBAImlu
aXRpYXRvck9yaWdpbiI6IChOU1N0cmluZyAqKWluaXRpYXRvck9yaWdpbiwKKyAgICAgICAgQCJp
bml0aWF0aW5nQWN0aW9uIjogQChzdGF0aWNfY2FzdDxOU0ludGVnZXI+KG1fYWN0aW9uKSkKKyAg
ICB9OworICAgIFttX3NvQXV0aG9yaXphdGlvbiBzZXRBdXRob3JpemF0aW9uT3B0aW9uczphdXRo
b3JpemF0aW9uT3B0aW9uc107CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIGlmICghW2Zy
b21XZWJQYWdlUHJveHkoKm1fcGFnZSkuVUlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF9wcmVzZW50aW5nVmlld0NvbnRyb2xsZXJGb3JXZWJWaWV3OildKQotICAgICAgICAg
ICAgW21fc29BdXRob3JpemF0aW9uIHNldEVuYWJsZUVtYmVkZGVkQXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyOk5PXTsKKyAgICBpZiAoIVtmcm9tV2ViUGFnZVByb3h5KCptX3BhZ2UpLlVJRGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfcHJlc2VudGluZ1ZpZXdDb250cm9s
bGVyRm9yV2ViVmlldzopXSkKKyAgICAgICAgW21fc29BdXRob3JpemF0aW9uIHNldEVuYWJsZUVt
YmVkZGVkQXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOk5PXTsKICNlbmRpZgogCi0gICAgICAg
IGF1dG8gKm5zUmVxdWVzdCA9IG1fbmF2aWdhdGlvbkFjdGlvbi0+cmVxdWVzdCgpLm5zVVJMUmVx
dWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6VXBkYXRlSFRUUEJvZHkpOwotICAg
ICAgICBbbV9zb0F1dGhvcml6YXRpb24gYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpuc1JlcXVl
c3QuVVJMIGh0dHBIZWFkZXJzOm5zUmVxdWVzdC5hbGxIVFRQSGVhZGVyRmllbGRzIGh0dHBCb2R5
Om5zUmVxdWVzdC5IVFRQQm9keV07Ci0gICAgfSk7CisgICAgYXV0byAqbnNSZXF1ZXN0ID0gbV9u
YXZpZ2F0aW9uQWN0aW9uLT5yZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5
VXBkYXRlUG9saWN5OjpVcGRhdGVIVFRQQm9keSk7CisgICAgW21fc29BdXRob3JpemF0aW9uIGJl
Z2luQXV0aG9yaXphdGlvbldpdGhVUkw6bnNSZXF1ZXN0LlVSTCBodHRwSGVhZGVyczpuc1JlcXVl
c3QuYWxsSFRUUEhlYWRlckZpZWxkcyBodHRwQm9keTpuc1JlcXVlc3QuSFRUUEJvZHldOwogfQog
CiB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OmZhbGxCYWNrVG9XZWJQYXRoKCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlODE4MWE4OGUx
ZmZiODRlMzFiYTFlNDdhOWNmYzRiMzc2OTA2NDczLi42NDE3Nzc5YmU2NWFlOGM1OTQ2MDdjODc5
MmU1NDYzYTA1MjA3MzE1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDEtMzEgIEppZXdlbiBUYW4gIDxqaWV3
ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBQYXNzIGEgaGludCBmcm9tIHRoZSBleHRlbnNp
b24gdG8gZGVjaWRlUG9saWN5Rm9yU09BdXRob3JpemF0aW9uTG9hZFdpdGhDdXJyZW50UG9saWN5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcwNzkK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4MjkwNDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9UZXN0U09BdXRob3JpemF0aW9uLm1tOgorICAgICAgICAoLVtUZXN0U09BdXRob3JpemF0
aW9uRGVsZWdhdGUgX3dlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yU09BdXRob3JpemF0aW9uTG9hZFdp
dGhDdXJyZW50UG9saWN5OmZvckV4dGVuc2lvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMC0wMS0zMCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGFub3RoZXIgc3BlY3VsYXRpdmUgdGVz
dCBmaXggYWZ0ZXIgcjI1NTA0MQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9UZXN0U09BdXRob3JpemF0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9UZXN0U09BdXRob3JpemF0aW9uLm1tCmluZGV4IDdlMGEyYzJk
ZWJmNzA4MzZkMDU4OTg4NDliYWUyN2MyYTQ3MTI5NmMuLjk3MzBhYzU4ZmE2ZTg4M2I4YThhNzFj
NTM1YTFlMTFiOGQ4ZDFlMmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvVGVzdFNPQXV0aG9yaXphdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1Rlc3RTT0F1dGhvcml6YXRpb24ubW0KQEAgLTE5Miw3ICsx
OTIsNyBAQCAtIChXS1dlYlZpZXcgKil3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNyZWF0
ZVdlYlZpZXdXaXRoQ29uZmlndXJhdGlvbjooV0tXZQogLSAodm9pZClfd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JTT0F1dGhvcml6YXRpb25Mb2FkV2l0aEN1cnJl
bnRQb2xpY3k6KF9XS1NPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3kpcG9saWN5IGZvckV4dGVuc2lv
bjooTlNTdHJpbmcgKilleHRlbnNpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1NP
QXV0aG9yaXphdGlvbkxvYWRQb2xpY3kgcG9saWN5KSljb21wbGV0aW9uSGFuZGxlcgogewogICAg
IEVYUEVDVF9FUShwb2xpY3ksIF9XS1NPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3lBbGxvdyk7Ci0g
ICAgRVhQRUNUX1RSVUUoW2V4dGVuc2lvbiBpc0VxdWFsOkAiIl0pOworICAgIEVYUEVDVF9UUlVF
KFtleHRlbnNpb24gaXNFcXVhbDpAIlRlc3QiXSk7CiAgICAgaWYgKCFzZWxmLmlzQXN5bmNFeGVj
dXRpb24pIHsKICAgICAgICAgaWYgKHNlbGYuYWxsb3dTT0F1dGhvcml6YXRpb25Mb2FkKQogICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocG9saWN5KTsKQEAgLTMwMCw2ICszMDAsMTUgQEAg
c3RhdGljIHZvaWQgb3ZlcnJpZGVDYW5jZWxBdXRob3JpemF0aW9uKGlkLCBTRUwpCiAgICAgYXV0
aG9yaXphdGlvbkNhbmNlbGxlZCA9IHRydWU7CiB9CiAKK3VzaW5nIEdldEF1dGhvcml6YXRpb25I
aW50c0NhbGxiYWNrID0gdm9pZCAoXikoU09BdXRob3JpemF0aW9uSGludHMgKmF1dGhvcml6YXRp
b25IaW50cywgTlNFcnJvciAqZXJyb3IpOworc3RhdGljIHZvaWQgb3ZlcnJpZGVHZXRBdXRob3Jp
emF0aW9uSGludHNXaXRoVVJMKGlkLCBTRUwsIE5TVVJMICp1cmwsIE5TSW50ZWdlciByZXNwb25z
ZUNvZGUsIEdldEF1dGhvcml6YXRpb25IaW50c0NhbGxiYWNrIGNvbXBsZXRpb24pCit7CisgICAg
RVhQRUNUX0VRKHJlc3BvbnNlQ29kZSwgMGwpOworICAgIGF1dG8gc29BdXRob3JpemF0aW9uSGlu
dHNDb3JlID0gYWRvcHROUyhbUEFMOjphbGxvY1NPQXV0aG9yaXphdGlvbkhpbnRzQ29yZUluc3Rh
bmNlKCkgaW5pdFdpdGhMb2NhbGl6ZWRFeHRlbnNpb25CdW5kbGVEaXNwbGF5TmFtZTpAIlRlc3Qi
XSk7CisgICAgYXV0byBzb0F1dGhvcml6YXRpb25IaW50cyA9IGFkb3B0TlMoW1BBTDo6YWxsb2NT
T0F1dGhvcml6YXRpb25IaW50c0luc3RhbmNlKCkgaW5pdFdpdGhBdXRob3JpemF0aW9uSGludHND
b3JlOnNvQXV0aG9yaXphdGlvbkhpbnRzQ29yZS5nZXQoKV0pOworICAgIGNvbXBsZXRpb24oc29B
dXRob3JpemF0aW9uSGludHMuZ2V0KCksIG51bGxwdHIpOworfQorCiAjaWYgUExBVEZPUk0oTUFD
KQogdXNpbmcgTm90aWZpY2F0aW9uQ2FsbGJhY2sgPSB2b2lkICheKShOU05vdGlmaWNhdGlvbiAq
bm90ZSk7CiBzdGF0aWMgaWQgb3ZlcnJpZGVBZGRPYnNlcnZlckZvck5hbWUoaWQsIFNFTCwgTlNO
b3RpZmljYXRpb25OYW1lIG5hbWUsIGlkLCBOU09wZXJhdGlvblF1ZXVlICosIE5vdGlmaWNhdGlv
bkNhbGxiYWNrIGJsb2NrKQpAQCAtMzg2LDcgKzM5NSw4IEBAIFRFU1QoU09BdXRob3JpemF0aW9u
UmVkaXJlY3QsIE5vSW50ZXJjZXB0aW9ucykKIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3Qs
IEludGVyY2VwdGlvbkVycm9yKQogewogICAgIHJlc2V0U3RhdGUoKTsKLSAgICBDbGFzc01ldGhv
ZFN3aXp6bGVyIHN3aXp6bGVyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVj
dG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7
CisgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRp
b25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3Bv
bnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9y
aXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQ
QUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9u
SGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8
SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFp
blB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3Vy
Y2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2Vi
S2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC00MDYsNiArNDE2LDcgQEAgVEVTVChTT0F1dGhvcml6
YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uRG9Ob3RIYW5kbGUpCiAgICAgQ2xhc3NNZXRob2RT
d2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0
b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVy
cHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsK
ICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXph
dGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElN
UD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dp
enpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0
aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNl
TWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwg
QHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBs
ZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhp
bnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0
bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTQyOSw2
ICs0NDAsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25DYW5j
ZWwpCiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6
YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJl
c3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0
aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVy
MihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTop
LCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3Rh
bmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3Mo
KSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJv
ZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0
aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09B
dXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhV
Ukw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJy
aWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJM
PiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBs
ZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl07CiAKQEAgLTQ1Miw2ICs0NjQsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGly
ZWN0LCBJbnRlcmNlcHRpb25Db21wbGV0ZVdpdGhvdXREYXRhKQogICAgIENsYXNzTWV0aG9kU3dp
enpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9y
KGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnBy
ZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAg
ICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRp
b25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6
bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhv
cml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8
SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1l
dGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBz
ZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0
aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50
c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUg
bWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1s
IiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC00NzUsNiAr
NDg4LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uVW5leHBl
Y3RlZENvbXBsZXRpb24pCiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpn
ZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRp
b25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVD
YW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6
bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rvcihz
ZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkp
OwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3Jp
emF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhl
YWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRo
b3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0
KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRp
b25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0
YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNv
dXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RX
ZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTQ5OSw2ICs1MTMsNyBAQCBURVNUKFNPQXV0aG9y
aXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25TdWNjZWVkMSkKICAgICBDbGFzc01ldGhvZFN3
aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rv
cihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJw
cmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwog
ICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0
aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6
emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRo
b3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0
PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VN
ZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBA
c2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxl
dGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGlu
dHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxl
IG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRt
bCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKIApAQCAtNTMzLDYg
KzU0OCw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvblN1Y2Nl
ZWQyKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3Jp
emF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpy
ZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1
dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxl
cjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0
YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNz
KCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBC
b2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldp
dGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNP
QXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRo
VVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVy
cmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2Uo
MCwgMCwgMzIwLCA1MDApXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0U09B
dXRob3JpemF0aW9uQmFzaWNEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwpAQCAtNTY3LDYgKzU4Myw3
IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvblN1Y2NlZWQzKQog
ICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9u
Q2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25z
ZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6
YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFM
OjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1l
dGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBz
ZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5Oiks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwp
KTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9y
aXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJl
c3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdl
dEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwg
MzIwLCA1MDApXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0U09BdXRob3Jp
emF0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKQEAgLTYwMiw2ICs2MTksNyBAQCBURVNUKFNP
QXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25TdWNjZWVkNCkKICAgICBDbGFzc01l
dGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBz
ZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVS
TCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRo
b3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxl
ciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVn
aW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJl
dF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5z
dGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFz
cygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6
Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0
aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05T
QnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9u
OkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKIApAQCAt
NjMyLDYgKzY1MCw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlv
blN1Y2NlZWRXaXRoT3RoZXJIdHRwU3RhdHVzQ29kZSkKICAgICBDbGFzc01ldGhvZFN3aXp6bGVy
IHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5Q
ZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIElu
c3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xh
c3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVy
cmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMo
UEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0
aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4o
b3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RT
d2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0
b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjop
LCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRo
VVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5C
dW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3Vi
ZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKIApAQCAtNjU2LDYgKzY3NSw3
IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvblN1Y2NlZWRXaXRo
Q29va2llKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRo
b3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVS
TDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9y
bUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6
emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdh
dGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJ
bnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNs
YXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0
dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlv
bldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6Omdl
dFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNX
aXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihv
dmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxO
U1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJz
aW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdOwogCkBAIC02OTEsNiArNzExLDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25S
ZWRpcmVjdCwgSW50ZXJjZXB0aW9uU3VjY2VlZFdpdGhDb29raWVzKQogICAgIENsYXNzTWV0aG9k
U3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVj
dG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7
CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6
YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJ
TVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3
aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1
dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCks
IEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21w
bGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25I
aW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJo
dG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC03Mjcs
NiArNzQ4LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uU3Vj
Y2VlZFdpdGhSZWRpcmVjdGlvbkFuZENvb2tpZSkKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3
aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJm
b3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8
SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3Rh
bmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3Mo
KSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlk
ZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFM
OjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9u
V2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3Zl
cnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6
emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Io
Z2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCBy
ZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJM
KSk7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOwogICAgIGF1dG8gZGVs
ZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFNPQXV0aG9yaXphdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0
XSk7CkBAIC03NjYsNiArNzg4LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50
ZXJjZXB0aW9uU3VjY2VlZFdpdGhEaWZmZXJlbnRPcmlnaW4pCiAgICAgQ2xhc3NNZXRob2RTd2l6
emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Io
Y2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJl
dF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAg
ICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlv
bkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4o
b3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenps
ZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9y
aXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJ
TVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0
aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNl
bGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRp
b246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRz
V2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwi
IHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTc5MCw2ICs4
MTMsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25TdWNjZWVk
V2l0aFdhaXRpbmdTZXNzaW9uKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBB
TDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3Jp
emF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJy
aWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RT
d2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0
b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdh
dGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0
aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0
dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2lu
QXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6
bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3Jp
emF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0
X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAg
IFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9y
UmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJU
ZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC04MjUsNiArODQ5LDcgQEAgVEVTVChTT0F1
dGhvcml6YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uQWJvcnRlZFdpdGhXYWl0aW5nU2Vzc2lv
bikKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXph
dGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVz
cG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRo
b3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIy
KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFu
Y2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygp
LCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9k
eTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRo
VVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1
dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVS
TDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+
IHRlc3RVUkwxID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBs
ZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl07CiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMMiA9IFtbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIg
c3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKQEAgLTg1NCw2ICs4Nzks
NyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25TdWNjZWVkV2l0
aEFjdGl2ZVNlc3Npb25EaWRNb3ZlV2luZG93KQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dp
enpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZv
cm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJ
TVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFu
Y2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygp
LCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRl
U2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6
OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25X
aXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVy
cmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6
bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rvcihn
ZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwp
KTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC04ODUsNiArOTExLDcgQEAg
VEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uU3VjY2VlZFR3aWNlKQog
ICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9u
Q2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25z
ZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6
YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFM
OjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1l
dGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBz
ZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5Oiks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwp
KTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9y
aXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJl
c3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdl
dEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gdGVz
dFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdp
dGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdOwogCkBAIC05MTgsNiArOTQ1LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwg
SW50ZXJjZXB0aW9uU3VjY2VlZFN1cHByZXNzQWN0aXZlU2Vzc2lvbikKICAgICBJbnN0YW5jZU1l
dGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBz
ZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXRE
ZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0
U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhV
Ukw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRl
QmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIg
c3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhbmNl
bEF1dGhvcml6YXRpb24pLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5jZWxBdXRo
b3JpemF0aW9uKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjUoUEFMOjpn
ZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRz
V2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4o
b3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8
TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAi
c2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQ
SS5yZXNvdXJjZXMiXTsKIApAQCAtOTUzLDYgKzk4MSw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9u
UmVkaXJlY3QsIEludGVyY2VwdGlvblN1Y2NlZWRTdXBwcmVzc1dhaXRpbmdTZXNzaW9uKQogICAg
IENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xh
c3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNv
ZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRp
b25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpn
ZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhv
ZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxl
Y3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsK
KyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXph
dGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3Bv
bnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1
dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVS
TCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhF
eHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJd
OwogCkBAIC05OTQsNiArMTAyMyw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIElu
dGVyY2VwdGlvblN1Y2NlZWRTQU1MKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIx
KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRo
b3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92
ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRo
b2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2Vs
ZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVs
ZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNP
QXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJM
Omh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJl
Z2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3
aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRo
b3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJw
cmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAog
ICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJM
Rm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6
QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC0xMDIyLDYgKzEwNTIsNyBAQCBURVNU
KFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25TdWNjZWVkU0FNTFdpdGhQU09O
KQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0
aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNw
b25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhv
cml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIo
UEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCks
IEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5
OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhV
UkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0
aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJM
OnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlk
ZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4g
YmFzZVVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUz
IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNv
dXJjZXMiXTsKICAgICBhdXRvIHRlc3RVUkwgPSBVUkwoVVJMKCksICJodHRwOi8vd3d3LmV4YW1w
bGUuY29tIik7CkBAIC0xMDU1LDYgKzEwODYsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGly
ZWN0LCBBdXRob3JpemF0aW9uT3B0aW9ucykKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6
bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3Jt
QXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNl
TWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwg
QHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNl
dERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpn
ZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0
aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxl
ciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0
QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWlu
dGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7
CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOwogICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtbVGVzdFNPQXV0aG9yaXphdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7
CkBAIC0xMDc1LDYgKzExMDcsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRl
cmNlcHRpb25EaWROb3RIYW5kbGVUd2ljZSkKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6
bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3Jt
QXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNl
TWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwg
QHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNl
dERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpn
ZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0
aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxl
ciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0
QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWlu
dGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7
CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVd
IFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0
b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKIApAQCAtMTA5Niw2ICsxMTI5LDcgQEAg
VEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uQ29tcGxldGVUd2ljZSkK
ICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlv
bkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9u
c2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3Jp
emF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBB
TDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VN
ZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBA
c2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTop
LCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJM
KSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhv
cml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpy
ZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVH
ZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRl
c3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3
aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXMiXTsKIApAQCAtMTExNiw3ICsxMTUwLDggQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVj
dCwgSW50ZXJjZXB0aW9uQ29tcGxldGVUd2ljZSkKIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJl
Y3QsIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3lJZ25vcmUpCiB7CiAgICAgcmVzZXRTdGF0ZSgp
OwotICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIoUEFMOjpnZXRTT0F1dGhvcml6YXRp
b25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3Bv
bnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9y
aXphdGlvbldpdGhVUkwpKTsKKyAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6
OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXph
dGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlk
ZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dp
enpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9y
KGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVS
TCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTExMzcsNiArMTE3Miw3
IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xp
Y3lBbGxvd0FzeW5jKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0
U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9u
V2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2Fu
UGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxl
ciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0
RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsK
ICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXph
dGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFk
ZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9y
aXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQ
QUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9u
SGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8
SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFp
blB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3Vy
Y2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2Vi
S2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC0xMTYyLDcgKzExOTgsOCBAQCBURVNUKFNPQXV0aG9y
aXphdGlvblJlZGlyZWN0LCBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5QWxsb3dBc3luYykKIFRF
U1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3lJZ25v
cmVBc3luYykKIHsKICAgICByZXNldFN0YXRlKCk7Ci0gICAgQ2xhc3NNZXRob2RTd2l6emxlciBz
d2l6emxlcihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJm
b3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8
SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIENsYXNz
TWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwg
QHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRo
VVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1
dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVS
TDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+
IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxl
IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNv
dXJjZXMiXTsKIApAQCAtMTE4Nyw2ICsxMjI0LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRp
cmVjdCwgSW50ZXJjZXB0aW9uU3VjY2VlZFdpdGhVSSkKICAgICBDbGFzc01ldGhvZFN3aXp6bGVy
IHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5Q
ZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIElu
c3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xh
c3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVy
cmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMo
UEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0
aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4o
b3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RT
d2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0
b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjop
LCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRo
VVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5C
dW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3Vi
ZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKIApAQCAtMTIyMCw2ICsxMjU4
LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uQ2FuY2VsV2l0
aFVJKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3Jp
emF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpy
ZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1
dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxl
cjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0
YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNz
KCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBC
b2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldp
dGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNP
QXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRo
VVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVy
cmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VS
TD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1w
bGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJl
c291cmNlcyJdOwogCkBAIC0xMjUyLDYgKzEyOTEsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJl
ZGlyZWN0LCBJbnRlcmNlcHRpb25FcnJvcldpdGhVSSkKICAgICBDbGFzc01ldGhvZFN3aXp6bGVy
IHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5Q
ZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIElu
c3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xh
c3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVy
cmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMo
UEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0
aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4o
b3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RT
d2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0
b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjop
LCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRo
VVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5C
dW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3Vi
ZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKIApAQCAtMTI4NCw2ICsxMzI0
LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uU3VjY2VlZFN1
cHByZXNzQWN0aXZlU2Vzc2lvbldpdGhVSSkKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3
aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxl
Z2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAg
IEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9u
Q2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6
aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0
aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6
Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhbmNlbEF1dGhvcml6YXRpb24p
LCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5jZWxBdXRob3JpemF0aW9uKSk7Cisg
ICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjUoUEFMOjpnZXRTT0F1dGhvcml6YXRp
b25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25z
ZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRo
b3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwg
PSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0
ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsK
IApAQCAtMTMyMyw2ICsxMzY0LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgU2hv
d1VJVHdpY2UpCiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1
dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRo
VVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJm
b3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3
aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxl
Z2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAg
IEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9u
Q2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6
aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0
aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6
Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50
c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRy
PE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpA
InNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRB
UEkucmVzb3VyY2VzIl07CiAKQEAgLTEzNjAsNiArMTQwMiw3IEBAIFRFU1QoU09BdXRob3JpemF0
aW9uUmVkaXJlY3QsIE5TTm90aWZpY2F0aW9uQ2VudGVyKQogICAgIENsYXNzTWV0aG9kU3dpenps
ZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNh
blBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRf
Y2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAg
SW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25D
bGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92
ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVy
MyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6
YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhv
ZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxl
Y3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9u
OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dp
dGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBz
dWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC0xNDIwLDYgKzE0
NjMsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblBvcFVwLCBOb0ludGVyY2VwdGlvbnNTdWJGcmFt
ZSkKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXph
dGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVz
cG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRo
b3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIy
KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFu
Y2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygp
LCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9k
eTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRo
VVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1
dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVS
TDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+
IGJhc2VVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxl
MiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl07CiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWlu
QnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1
YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CkBAIC0xNDQ2LDYgKzE0OTAs
NyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblBvcFVwLCBOb0ludGVyY2VwdGlvbnNXaXRob3V0VXNl
ckdlc3R1cmUpCiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1
dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRo
VVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJm
b3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3
aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxl
Z2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAg
IEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9u
Q2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6
aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0
aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6
Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50
c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgLy8gVGhlIGRl
ZmF1bHQgdmFsdWUgb2YgamF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSBpcyBO
TyBvbiBpT1MsIGFuZCBZRVMgb24gbWFjT1MuCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTE0NjYsNiAr
MTUxMSw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUG9wVXAsIEludGVyY2VwdGlvbkVycm9yKQog
ICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9u
Q2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25z
ZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6
YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFM
OjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1l
dGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBz
ZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5Oiks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwp
KTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9y
aXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJl
c3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdl
dEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gYmFz
ZVVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3
aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXMiXTsKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGly
ZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKQEAgLTE1MDIsNiArMTU0OCw3IEBA
IFRFU1QoU09BdXRob3JpemF0aW9uUG9wVXAsIEludGVyY2VwdGlvbkNhbmNlbCkKICAgICBDbGFz
c01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCks
IEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0
aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09B
dXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0
X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6
emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Io
YmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVy
cHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAg
SW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25D
bGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNv
ZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3Jp
emF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IGJhc2VVUkwgPSBb
W05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVu
c2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAg
ICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxG
b3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpA
IlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CkBAIC0xNTM1LDYgKzE1ODIsNyBAQCBURVNUKFNP
QXV0aG9yaXphdGlvblBvcFVwLCBJbnRlcmNlcHRpb25TdWNjZWVkQ2xvc2VCeUl0c2VsZikKICAg
ICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNs
YXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VD
b2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0
aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6
Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50
ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRo
b2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2Vs
ZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCBy
ZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7
CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6
YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNw
b25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRB
dXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IGJhc2VV
UkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0
aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2Vz
Il07CiAgICAgYXV0byB0ZXN0VVJMID0gVVJMKFVSTCgpLCAiaHR0cDovL3d3dy5leGFtcGxlLmNv
bSIpOwpAQCAtMTU3MSw2ICsxNjE5LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwgSW50
ZXJjZXB0aW9uU3VjY2VlZENsb3NlQnlQYXJlbnQpCiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBz
d2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVy
Zm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0
PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0
YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNz
KCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBB
TDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlv
bldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92
ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dp
enpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9y
KGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVS
TCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiBiYXNlVVJMID0gW1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZTIiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJk
aXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogICAgIGF1dG8gdGVzdFVSTCA9
IFVSTChVUkwoKSwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKTsKQEAgLTE2MDcsNiArMTY1Niw3
IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUG9wVXAsIEludGVyY2VwdGlvblN1Y2NlZWRDbG9zZUJ5
V2ViS2l0KQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRo
b3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVS
TDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9y
bUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6
emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdh
dGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJ
bnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNs
YXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0
dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlv
bldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6Omdl
dFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNX
aXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihv
dmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxO
U1VSTD4gYmFzZVVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJz
aW1wbGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQ
SS5yZXNvdXJjZXMiXTsKICAgICBhdXRvIHRlc3RVUkwgPSBVUkwoVVJMKCksICJodHRwOi8vd3d3
LmV4YW1wbGUuY29tIik7CkBAIC0xNjQzLDYgKzE2OTMsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlv
blBvcFVwLCBJbnRlcmNlcHRpb25TdWNjZWVkV2l0aE90aGVySHR0cFN0YXR1c0NvZGUpCiAgICAg
Q2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFz
cygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29k
ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlv
bldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6Omdl
dFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVy
cHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9k
U3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVj
dG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOwor
ICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0
aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9u
c2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0
aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiBiYXNlVVJM
ID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZTIiIHdpdGhF
eHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJd
OwogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rv
cnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwpAQCAtMTY4Myw2ICsxNzM0LDcgQEAgVEVT
VChTT0F1dGhvcml6YXRpb25Qb3BVcCwgSW50ZXJjZXB0aW9uU3VjY2VlZFdpdGhDb29raWUpCiAg
ICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25D
bGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNl
Q29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXph
dGlvbldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6
OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWlu
dGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0
aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNl
bGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkp
OworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3Jp
emF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVz
cG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0
QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiBiYXNl
VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZTIiIHdp
dGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdOwogICAgIGF1dG8gdGVzdFVSTCA9IFVSTChVUkwoKSwgImh0dHA6Ly93d3cuZXhhbXBsZS5j
b20iKTsKQEAgLTE3MTksNiArMTc3MSw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUG9wVXAsIElu
dGVyY2VwdGlvblN1Y2NlZWRUd2ljZSkKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVy
MShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0
aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihv
dmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0
aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNl
bGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERl
bGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRT
T0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVS
TDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVC
ZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBz
d2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0
aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVy
cHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAK
ICAgICBSZXRhaW5QdHI8TlNVUkw+IGJhc2VVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVS
TEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9y
eTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAgICAgYXV0byB0ZXN0VVJMID0gVVJMKFVS
TCgpLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpOwpAQCAtMTc1OSw2ICsxODEyLDcgQEAgVEVT
VChTT0F1dGhvcml6YXRpb25Qb3BVcCwgSW50ZXJjZXB0aW9uU3VjY2VlZFN1cHByZXNzQWN0aXZl
U2Vzc2lvbikKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNP
QXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJl
dF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dp
enpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9y
KGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAg
IEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9u
Q2xhc3MoKSwgQHNlbGVjdG9yKGNhbmNlbEF1dGhvcml6YXRpb24pLCByZWludGVycHJldF9jYXN0
PElNUD4ob3ZlcnJpZGVDYW5jZWxBdXRob3JpemF0aW9uKSk7CisgICAgSW5zdGFuY2VNZXRob2RT
d2l6emxlciBzd2l6emxlcjUoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0
b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjop
LCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRo
VVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IGJhc2VVUkwgPSBbW05TQnVuZGxlIG1haW5C
dW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1
YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAgICAgYXV0byB0ZXN0VVJM
ID0gVVJMKFVSTCgpLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpOwpAQCAtMTgyMCw2ICsxODc0
LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwgSW50ZXJjZXB0aW9uU3VjY2VlZE5ld1dp
bmRvd05hdmlnYXRpb24pCiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpn
ZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRp
b25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVD
YW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6
bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rvcihz
ZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkp
OwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3Jp
emF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhl
YWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRo
b3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0
KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRp
b25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0
YWluUHRyPE5TVVJMPiBiYXNlVVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNv
dXJjZTpAInNpbXBsZTIiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0
V2ViS2l0QVBJLnJlc291cmNlcyJdOwogICAgIGF1dG8gdGVzdFVSTCA9IFVSTChVUkwoKSwgImh0
dHA6Ly93d3cuZXhhbXBsZS5jb20iKTsKQEAgLTE4NTYsNiArMTkxMSw3IEBAIFRFU1QoU09BdXRo
b3JpemF0aW9uUG9wVXAsIEF1dGhvcml6YXRpb25PcHRpb25zKQogICAgIENsYXNzTWV0aG9kU3dp
enpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9y
KGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnBy
ZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAg
ICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRp
b25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6
bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhv
cml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8
SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1l
dGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBz
ZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0
aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50
c1dpdGhVUkwpKTsKIAogICAgIGF1dG8gdGVzdFVSTCA9IFVSTChVUkwoKSwgImh0dHA6Ly93d3cu
ZXhhbXBsZS5jb20iKTsKICAgICBhdXRvIHRlc3RIdG1sID0gZ2VuZXJhdGVIdG1sKG9wZW5lclRl
bXBsYXRlLCB0ZXN0VVJMLnN0cmluZygpKTsKQEAgLTE4NzksNyArMTkzNSw4IEBAIFRFU1QoU09B
dXRob3JpemF0aW9uUG9wVXAsIEF1dGhvcml6YXRpb25PcHRpb25zKQogVEVTVChTT0F1dGhvcml6
YXRpb25Qb3BVcCwgU09BdXRob3JpemF0aW9uTG9hZFBvbGljeUlnbm9yZSkKIHsKICAgICByZXNl
dFN0YXRlKCk7Ci0gICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcihQQUw6OmdldFNPQXV0
aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhV
Ukw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZv
cm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenps
ZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1B
dXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VN
ZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBA
c2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxl
dGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGlu
dHNXaXRoVVJMKSk7CiAKICAgICBhdXRvIHRlc3RVUkwgPSBVUkwoVVJMKCksICJodHRwOi8vd3d3
LmV4YW1wbGUuY29tIik7CiAgICAgYXV0byB0ZXN0SHRtbCA9IGdlbmVyYXRlSHRtbChvcGVuZXJU
ZW1wbGF0ZSwgdGVzdFVSTC5zdHJpbmcoKSk7CkBAIC0xOTA3LDYgKzE5NjQsNyBAQCBURVNUKFNP
QXV0aG9yaXphdGlvblBvcFVwLCBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5QWxsb3dBc3luYykK
ICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlv
bkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9u
c2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3Jp
emF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBB
TDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VN
ZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBA
c2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTop
LCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJM
KSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhv
cml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpy
ZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVH
ZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IGJh
c2VVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIg
d2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3Vy
Y2VzIl07CiAgICAgYXV0byB0ZXN0VVJMID0gVVJMKFVSTCgpLCAiaHR0cDovL3d3dy5leGFtcGxl
LmNvbSIpOwpAQCAtMTk0Miw3ICsyMDAwLDggQEAgVEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwg
U09BdXRob3JpemF0aW9uTG9hZFBvbGljeUFsbG93QXN5bmMpCiBURVNUKFNPQXV0aG9yaXphdGlv
blBvcFVwLCBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5SWdub3JlQXN5bmMpCiB7CiAgICAgcmVz
ZXRTdGF0ZSgpOwotICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIoUEFMOjpnZXRTT0F1
dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRo
VVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJm
b3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6
bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3Jt
QXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNl
TWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwg
QHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBs
ZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhp
bnRzV2l0aFVSTCkpOwogCiAgICAgYXV0byB0ZXN0VVJMID0gVVJMKFVSTCgpLCAiaHR0cDovL3d3
dy5leGFtcGxlLmNvbSIpOwogICAgIGF1dG8gdGVzdEh0bWwgPSBnZW5lcmF0ZUh0bWwob3BlbmVy
VGVtcGxhdGUsIHRlc3RVUkwuc3RyaW5nKCkpOwpAQCAtMTk4Niw2ICsyMDQ1LDcgQEAgVEVTVChT
T0F1dGhvcml6YXRpb25TdWJGcmFtZSwgTm9JbnRlcmNlcHRpb25zTm9uQXBwbGVGaXJzdFBhcnR5
TWFpbkZyYW1lKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09B
dXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0
aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVy
Zm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBz
d2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVs
ZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAg
ICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlv
bkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJz
Omh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXph
dGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNShQQUw6
OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGlu
dHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIGF1dG8gdGVz
dEh0bWwgPSBnZW5lcmF0ZUh0bWwocGFyZW50VGVtcGxhdGUsIFVSTChVUkwoKSwgImh0dHA6Ly93
d3cuZXhhbXBsZS5jb20iKS5zdHJpbmcoKSk7CiAKQEAgLTIwMDcsNiArMjA2Nyw3IEBAIFRFU1Qo
U09BdXRob3JpemF0aW9uU3ViRnJhbWUsIEludGVyY2VwdGlvbkVycm9yKQogICAgIEluc3RhbmNl
TWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwg
QHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNl
dERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpn
ZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0
aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBz
d2l6emxlcjQoW0FLQXV0aG9yaXphdGlvbkNvbnRyb2xsZXIgY2xhc3NdLCBAc2VsZWN0b3IoaXNV
UkxGcm9tQXBwbGVPd25lZERvbWFpbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVJ
c1VSTEZyb21BcHBsZU93bmVkRG9tYWluKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBz
d2l6emxlcjUoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0
aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVy
cHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAK
ICAgICBSZXRhaW5QdHI8TlNVUkw+IGJhc2VVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVS
TEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9y
eTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0
VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIkdldFNlc3Npb25D
b29raWUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdOwpAQCAtMjAzOCw2ICsyMDk5LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25T
dWJGcmFtZSwgSW50ZXJjZXB0aW9uU3VjY2VzcykKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVy
IHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXRE
ZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwog
ICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0
aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRl
cnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3Jp
emF0aW9uV2l0aFVSTCkpOwogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFtBS0F1
dGhvcml6YXRpb25Db250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKGlzVVJMRnJvbUFwcGxlT3du
ZWREb21haW46KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlSXNVUkxGcm9tQXBwbGVP
d25lZERvbWFpbikpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI1KFBBTDo6
Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50
c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgYXV0byB0ZXN0
VVJMID0gVVJMKFVSTCgpLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpOwogICAgIGF1dG8gdGVz
dEh0bWwgPSBnZW5lcmF0ZUh0bWwocGFyZW50VGVtcGxhdGUsIHRlc3RVUkwuc3RyaW5nKCkpOwpA
QCAtMjA2NSw2ICsyMTI3LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25TdWJGcmFtZSwgSW50ZXJj
ZXB0aW9uU3VjY2VlZFdpdGhPdGhlckh0dHBTdGF0dXNDb2RlKQogICAgIEluc3RhbmNlTWV0aG9k
U3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVj
dG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVn
YXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1
dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpo
dHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdp
bkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxl
cjQoW0FLQXV0aG9yaXphdGlvbkNvbnRyb2xsZXIgY2xhc3NdLCBAc2VsZWN0b3IoaXNVUkxGcm9t
QXBwbGVPd25lZERvbWFpbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVJc1VSTEZy
b21BcHBsZU93bmVkRG9tYWluKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxl
cjUoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXph
dGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9j
YXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBS
ZXRhaW5QdHI8TlNVUkw+IGJhc2VVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJl
c291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRl
c3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0g
W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIkdldFNlc3Npb25Db29raWUi
IHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291
cmNlcyJdOwpAQCAtMjEwMCw2ICsyMTYzLDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25TdWJGcmFt
ZSwgSW50ZXJjZXB0aW9uU3VjY2VlZFdpdGhDb29raWUpCiAgICAgSW5zdGFuY2VNZXRob2RTd2l6
emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Io
c2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUp
KTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9y
aXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBI
ZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0
aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChb
QUtBdXRob3JpemF0aW9uQ29udHJvbGxlciBjbGFzc10sIEBzZWxlY3Rvcihpc1VSTEZyb21BcHBs
ZU93bmVkRG9tYWluOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUlzVVJMRnJvbUFw
cGxlT3duZWREb21haW4pKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNShQ
QUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9u
SGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8
SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIGF1dG8g
dGVzdFVSTCA9IFVSTChVUkwoKSwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKTsKICAgICBhdXRv
IHRlc3RIdG1sID0gZ2VuZXJhdGVIdG1sKHBhcmVudFRlbXBsYXRlLCB0ZXN0VVJMLnN0cmluZygp
KTsKQEAgLTIxMjcsNiArMjE5MSw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uU3ViRnJhbWUsIElu
dGVyY2VwdGlvblN1Y2Nlc3NUd2ljZSkKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6
bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0
ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIElu
c3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xh
c3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0
cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9u
V2l0aFVSTCkpOwogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFtBS0F1dGhvcml6
YXRpb25Db250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKGlzVVJMRnJvbUFwcGxlT3duZWREb21h
aW46KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlSXNVUkxGcm9tQXBwbGVPd25lZERv
bWFpbikpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI1KFBBTDo6Z2V0U09B
dXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhV
Ukw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJy
aWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgYXV0byB0ZXN0VVJMID0g
VVJMKFVSTCgpLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpOwogICAgIGF1dG8gdGVzdEh0bWwg
PSBnZW5lcmF0ZUh0bWwocGFyZW50VGVtcGxhdGUsIHRlc3RVUkwuc3RyaW5nKCkpOwpAQCAtMjE1
OSw2ICsyMjI0LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25TdWJGcmFtZSwgQXV0aG9yaXphdGlv
bk9wdGlvbnMpCiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRT
T0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnBy
ZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3
aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rv
cihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50
ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAg
ICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChbQUtBdXRob3JpemF0aW9uQ29udHJvbGxl
ciBjbGFzc10sIEBzZWxlY3Rvcihpc1VSTEZyb21BcHBsZU93bmVkRG9tYWluOiksIHJlaW50ZXJw
cmV0X2Nhc3Q8SU1QPihvdmVycmlkZUlzVVJMRnJvbUFwcGxlT3duZWREb21haW4pKTsKKyAgICBJ
bnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNs
YXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29k
ZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6
YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIGF1dG8gdGVzdFVSTCA9IFVSTChVUkwoKSwgImh0
dHA6Ly93d3cuZXhhbXBsZS5jb20iKTsKICAgICBhdXRvIHRlc3RIdG1sID0gZ2VuZXJhdGVIdG1s
KHBhcmVudFRlbXBsYXRlLCB0ZXN0VVJMLnN0cmluZygpKTsKQEAgLTIxNzYsNyArMjI0Miw4IEBA
IFRFU1QoU09BdXRob3JpemF0aW9uU3ViRnJhbWUsIEF1dGhvcml6YXRpb25PcHRpb25zKQogVEVT
VChTT0F1dGhvcml6YXRpb25TdWJGcmFtZSwgU09BdXRob3JpemF0aW9uTG9hZFBvbGljeUlnbm9y
ZSkKIHsKICAgICByZXNldFN0YXRlKCk7Ci0gICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxl
cihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0
aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihv
dmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIENsYXNzTWV0aG9k
U3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVj
dG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7
CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6
YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNw
b25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRB
dXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBhdXRvIHRlc3RVUkwgPSBVUkwoVVJM
KCksICJodHRwOi8vd3d3LmV4YW1wbGUuY29tIik7CiAgICAgYXV0byB0ZXN0SHRtbCA9IGdlbmVy
YXRlSHRtbChwYXJlbnRUZW1wbGF0ZSwgdGVzdFVSTC5zdHJpbmcoKSk7CkBAIC0yMjAwLDYgKzIy
NjcsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblN1YkZyYW1lLCBTT0F1dGhvcml6YXRpb25Mb2Fk
UG9saWN5QWxsb3dBc3luYykKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQ
QUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCBy
ZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNl
TWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwg
QHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVS
TCkpOwogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFtBS0F1dGhvcml6YXRpb25D
b250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKGlzVVJMRnJvbUFwcGxlT3duZWREb21haW46KSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlSXNVUkxGcm9tQXBwbGVPd25lZERvbWFpbikp
OworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI1KFBBTDo6Z2V0U09BdXRob3Jp
emF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVz
cG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0
QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgYXV0byB0ZXN0VVJMID0gVVJMKFVS
TCgpLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpOwogICAgIGF1dG8gdGVzdEh0bWwgPSBnZW5l
cmF0ZUh0bWwocGFyZW50VGVtcGxhdGUsIHRlc3RVUkwuc3RyaW5nKCkpOwpAQCAtMjIyNCw3ICsy
MjkyLDggQEAgVEVTVChTT0F1dGhvcml6YXRpb25TdWJGcmFtZSwgU09BdXRob3JpemF0aW9uTG9h
ZFBvbGljeUFsbG93QXN5bmMpCiBURVNUKFNPQXV0aG9yaXphdGlvblN1YkZyYW1lLCBTT0F1dGhv
cml6YXRpb25Mb2FkUG9saWN5SWdub3JlQXN5bmMpCiB7CiAgICAgcmVzZXRTdGF0ZSgpOwotICAg
IENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFz
cygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29k
ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlv
bldpdGhVUkwpKTsKKyAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNP
QXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldp
dGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBl
cmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIg
c3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1
dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwog
CiAgICAgYXV0byB0ZXN0VVJMID0gVVJMKFVSTCgpLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIp
OwogICAgIGF1dG8gdGVzdEh0bWwgPSBnZW5lcmF0ZUh0bWwocGFyZW50VGVtcGxhdGUsIHRlc3RV
Ukwuc3RyaW5nKCkpOwpAQCAtMjI0OSw2ICsyMzE4LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25T
dWJGcmFtZSwgSW50ZXJjZXB0aW9uRXJyb3JXaXRoUmVmZXJyZXIpCiAgICAgSW5zdGFuY2VNZXRo
b2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2Vs
ZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVs
ZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNP
QXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJM
Omh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJl
Z2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6
bGVyNChbQUtBdXRob3JpemF0aW9uQ29udHJvbGxlciBjbGFzc10sIEBzZWxlY3Rvcihpc1VSTEZy
b21BcHBsZU93bmVkRG9tYWluOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUlzVVJM
RnJvbUFwcGxlT3duZWREb21haW4pKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6
bGVyNShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3Jp
emF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0
X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAg
IFRDUFNlcnZlciBzZXJ2ZXIoW3BhcmVudEh0bWwgPSBnZW5lcmF0ZUh0bWwocGFyZW50VGVtcGxh
dGUsICJzaW1wbGUuaHRtbCIpLCBmcmFtZUh0bWwgPSBnZW5lcmF0ZUh0bWwoaWZyYW1lVGVtcGxh
dGUsICJwYXJlbnQucG9zdE1lc3NhZ2UoJ1JlZmVycmVyOiAnICsgZG9jdW1lbnQucmVmZXJyZXIs
ICcqJyk7IildIChpbnQgc29ja2V0KSB7CiAgICAgICAgIE5TU3RyaW5nICpmaXJzdFJlc3BvbnNl
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6CkBAIC0yMjk0LDYgKzIzNjQsNyBAQCBURVNU
KFNPQXV0aG9yaXphdGlvblN1YkZyYW1lLCBJbnRlcmNlcHRpb25FcnJvck1lc3NhZ2VPcmRlcikK
ICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXph
dGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElN
UD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dp
enpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0
aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIENsYXNzTWV0
aG9kU3dpenpsZXIgc3dpenpsZXI0KFtBS0F1dGhvcml6YXRpb25Db250cm9sbGVyIGNsYXNzXSwg
QHNlbGVjdG9yKGlzVVJMRnJvbUFwcGxlT3duZWREb21haW46KSwgcmVpbnRlcnByZXRfY2FzdDxJ
TVA+KG92ZXJyaWRlSXNVUkxGcm9tQXBwbGVPd25lZERvbWFpbikpOworICAgIEluc3RhbmNlTWV0
aG9kU3dpenpsZXIgc3dpenpsZXI1KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNl
bGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRp
b246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRz
V2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiBiYXNlVVJMID0gW1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZTIiIHdpdGhFeHRlbnNpb246QCJodG1s
IiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogICAgIFJldGFpblB0
cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6
QCJHZXRTZXNzaW9uQ29va2llIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAi
VGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKQEAgLTIzMjAsNiArMjM5MSw3IEBAIFRFU1QoU09B
dXRob3JpemF0aW9uU3ViRnJhbWUsIEludGVyY2VwdGlvblN1Y2Nlc3NNZXNzYWdlT3JkZXIpCiAg
ICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRp
b25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6
bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhv
cml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8
SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBDbGFzc01ldGhv
ZFN3aXp6bGVyIHN3aXp6bGVyNChbQUtBdXRob3JpemF0aW9uQ29udHJvbGxlciBjbGFzc10sIEBz
ZWxlY3Rvcihpc1VSTEZyb21BcHBsZU93bmVkRG9tYWluOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihvdmVycmlkZUlzVVJMRnJvbUFwcGxlT3duZWREb21haW4pKTsKKyAgICBJbnN0YW5jZU1ldGhv
ZFN3aXp6bGVyIHN3aXp6bGVyNShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxl
Y3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9u
OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dp
dGhVUkwpKTsKIAogICAgIGF1dG8gdGVzdFVSTCA9IFVSTChVUkwoKSwgImh0dHA6Ly93d3cuZXhh
bXBsZS5jb20iKTsKICAgICBhdXRvIHRlc3RIdG1sID0gZ2VuZXJhdGVIdG1sKHBhcmVudFRlbXBs
YXRlLCB0ZXN0VVJMLnN0cmluZygpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389455</attachid>
            <date>2020-01-31 22:16:59 -0800</date>
            <delta_ts>2020-02-01 19:13:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207079-20200131221658.patch</filename>
            <type>text/plain</type>
            <size>76439</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1NDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCAwYjgxN2Ex
OGZiYWQxZjNmMTQ1ZTViMDQ2ZGVlYWQ5NTU2MWQzOWE5Li44NTBkODk1NThiMzI1YWFhZmY2YTk4
MGQwNDJhYjFlYjYyODA1ZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAyMC0wMS0zMSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAg
IFBhc3MgYSBoaW50IGZyb20gdGhlIGV4dGVuc2lvbiB0byBkZWNpZGVQb2xpY3lGb3JTT0F1dGhv
cml6YXRpb25Mb2FkV2l0aEN1cnJlbnRQb2xpY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzA3OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDgy
OTA0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBwYWwvY29jb2EvQXBwU1NPU29mdExpbmsuaDoKKyAgICAgICAgKiBwYWwvY29jb2EvQXBwU1NP
U29mdExpbmsubW06CisgICAgICAgICogcGFsL3NwaS9jb2NvYS9BcHBTU09TUEkuaDoKKyAgICAg
ICAgQWRkcyBtYWNyb3MgZm9yIGNsYXNzZXMgdGhhdCBhcmUgdXNlZCBpbiB0aGUgdGVzdHMuCisK
IDIwMjAtMDEtMzAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBBZGQgV0tOYXZpZ2F0aW9uRGVsZWdhdGUgU1BJIHRvIGRpc2FibGUgVExTIDEu
MCBhbmQgMS4xCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJiMTgyOTE5ODg2YWNmODc2YTU3NjI2ZTY5OGFmYmRlMGU3
OWU4ZGEuLmI4MDI1M2U1N2I2ZDA2MDA0NzhkYzFmNjU3ZDc3OTYyMTFjMTBkYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMjAtMDEtMzEgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFw
cGxlLmNvbT4KKworICAgICAgICBQYXNzIGEgaGludCBmcm9tIHRoZSBleHRlbnNpb24gdG8gZGVj
aWRlUG9saWN5Rm9yU09BdXRob3JpemF0aW9uTG9hZFdpdGhDdXJyZW50UG9saWN5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcwNzkKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQ4MjkwNDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFBhc3MgYSBsb2NhbGl6ZWQgaHVtYW4gcmVhZGFibGUgaGludCBm
cm9tIHRoZSBleHRlbnNpb24gdG8gZGVjaWRlUG9saWN5Rm9yU09BdXRob3JpemF0aW9uTG9hZFdp
dGhDdXJyZW50UG9saWN5LAorICAgICAgICBzdWNoIHRoYXQgY2xpZW50cyBjYW4gZGlzcGxheSBp
dCB0byB0ZWxsIHVzZXJzIHdoYXQgdGhlIGV4dGVuc2lvbiBpcyB0cnlpbmcgdG8gZG8uIEhpbnRz
IGNvdWxkIGJlIHNvbWV0aGluZworICAgICAgICBsaWtlICJTaWduIEluIFdpdGggQXBwbGUiLgor
CisgICAgICAgIENvdmVyZWQgbmV3IHRlc3QgY29udGVudHMgd2l0aGluIGV4aXN0aW5nIHRlc3Rz
LgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6
YXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlv
bi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpTT0F1dGhvcml6
YXRpb25TZXNzaW9uOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OlNPQXV0aG9yaXphdGlvblNl
c3Npb246OmNvbnRpbnVlU3RhcnRBZnRlckdldEF1dGhvcml6YXRpb25IaW50cyk6CisgICAgICAg
IChXZWJLaXQ6OlNPQXV0aG9yaXphdGlvblNlc3Npb246OmNvbnRpbnVlU3RhcnRBZnRlckRlY2lk
ZVBvbGljeSk6CisKIDIwMjAtMDEtMzAgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgbG9nZ2luZyB0byBzaG93IHRoZSBmbG93IG9mIEFwcFNTTwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9BcHBTU09Tb2Z0TGluay5oIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9BcHBTU09Tb2Z0TGluay5oCmluZGV4IGY3NmM1
NjU5YjlhYWU4MGJlMTNmMmFjOWUyMmI2MTRiNzUyZDkxODAuLjIwOTAwZjljMTljZWU1ODlmNzVj
YTBjZWE0Yjc3ZTRhNzJkNTE3YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Y29jb2EvQXBwU1NPU29mdExpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29h
L0FwcFNTT1NvZnRMaW5rLmgKQEAgLTM0LDEwICszNCwxNiBAQCBTT0ZUX0xJTktfRlJBTUVXT1JL
X0ZPUl9IRUFERVIoUEFMLCBBcHBTU08pOwogCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQ
QUwsIFNPQXV0aG9yaXphdGlvbik7CiAKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwg
U09BdXRob3JpemF0aW9uSGludHMpOworCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQ
QUwsIEFwcFNTTywgU09BdXRob3JpemF0aW9uT3B0aW9uVXNlckFjdGlvbkluaXRpYXRlZCwgTlNT
dHJpbmcqKTsKICNkZWZpbmUgU09BdXRob3JpemF0aW9uT3B0aW9uVXNlckFjdGlvbkluaXRpYXRl
ZCBQQUw6OmdldF9BcHBTU09fU09BdXRob3JpemF0aW9uT3B0aW9uVXNlckFjdGlvbkluaXRpYXRl
ZCgpCiAKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQXBwU1NPLCBTT0Vycm9y
RG9tYWluLCBOU0Vycm9yRG9tYWluKTsKICNkZWZpbmUgU09FcnJvckRvbWFpbiBQQUw6OmdldF9B
cHBTU09fU09FcnJvckRvbWFpbigpCiAKK1NPRlRfTElOS19GUkFNRVdPUktfRk9SX0hFQURFUihQ
QUwsIEFwcFNTT0NvcmUpOworCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFNPQXV0
aG9yaXphdGlvbkhpbnRzQ29yZSk7CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9jb2NvYS9BcHBTU09Tb2Z0TGluay5tbSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvY29jb2EvQXBwU1NPU29mdExpbmsubW0KaW5kZXggOGEwYzU1N2QzOGU4ZmNiZmEwMGUwMzgw
MjE3MDJhNTNkMTVlMzlhYy4uZmU5NTI1MzE0MTYyNGZlY2VhNDU1ZGVhNWIzZWM3YmQ4YjAyNjUz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9BcHBTU09Tb2Z0TGlu
ay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL0FwcFNTT1NvZnRMaW5rLm1t
CkBAIC0zNyw4ICszNywxNCBAQCBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9X
SVRIX0VYUE9SVChQQUwsIEFwcFNTTywgU09BdXRob3JpemF0aW9uLCBQQQogU09GVF9MSU5LX0NM
QVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBcHBTU08sIFNPQXV0aG9yaXphdGlvbiwg
UEFMX0VYUE9SVCk7CiAjZW5kaWYKIAorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9F
WFBPUlQoUEFMLCBBcHBTU08sIFNPQXV0aG9yaXphdGlvbkhpbnRzLCBQQUxfRVhQT1JUKTsKKwog
U09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBcHBTU08sIFNP
QXV0aG9yaXphdGlvbk9wdGlvblVzZXJBY3Rpb25Jbml0aWF0ZWQsIE5TU3RyaW5nKiwgUEFMX0VY
UE9SVCk7CiAKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwg
QXBwU1NPLCBTT0Vycm9yRG9tYWluLCBOU0Vycm9yRG9tYWluLCBQQUxfRVhQT1JUKTsKIAorU09G
VF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBcHBT
U09Db3JlLCBQQUxfRVhQT1JUKTsKKworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9F
WFBPUlQoUEFMLCBBcHBTU09Db3JlLCBTT0F1dGhvcml6YXRpb25IaW50c0NvcmUsIFBBTF9FWFBP
UlQpOworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2Nv
Y29hL0FwcFNTT1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQXBwU1NP
U1BJLmgKaW5kZXggZjNjMjQ5NzE3MTMyYWY1ZTY5NmVkNjEzNDRlNmIyODkyMTZjOWQxMi4uNGI5
ZjljMDlmMTg2ZjhjOTMwMzkxYjg3MzNmYzgzNGIxNzQ5OWRlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQXBwU1NPU1BJLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvY29jb2EvQXBwU1NPU1BJLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpZiBV
U0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCiAjaW1wb3J0IDxBcHBTU08vQXBwU1NPLmg+CisjaW1w
b3J0IDxBcHBTU09Db3JlL0FwcFNTT0NvcmUuaD4KIAogI2Vsc2UKIApAQCAtNzQsMTEgKzc1LDI2
IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFNPQXV0aG9yaXphdGlvbkluaXRpYXRpbmdB
Y3Rpb24pIHsKICAgICBTT0F1dGhvcml6YXRpb25Jbml0aWF0aW5nQWN0aW9uU3ViZnJhbWUsCiB9
OwogCitAaW50ZXJmYWNlIFNPQXV0aG9yaXphdGlvbkhpbnRzQ29yZSA6IE5TT2JqZWN0IDxOU1Nl
Y3VyZUNvZGluZz4KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTG9jYWxpemVkRXh0ZW5zaW9u
QnVuZGxlRGlzcGxheU5hbWU6KE5TU3RyaW5nICopbG9jYWxpemVkRXh0ZW5zaW9uQnVuZGxlRGlz
cGxheU5hbWU7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKmxv
Y2FsaXplZEV4dGVuc2lvbkJ1bmRsZURpc3BsYXlOYW1lOworCitAZW5kCisKK0BpbnRlcmZhY2Ug
U09BdXRob3JpemF0aW9uSGludHMgOiBOU09iamVjdAorCistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhBdXRob3JpemF0aW9uSGludHNDb3JlOihTT0F1dGhvcml6YXRpb25IaW50c0NvcmUgKilhdXRo
b3JpemF0aW9uSGludHNDb3JlOworCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5T
U3RyaW5nICpsb2NhbGl6ZWRFeHRlbnNpb25CdW5kbGVEaXNwbGF5TmFtZTsKKwogQGludGVyZmFj
ZSBTT0F1dGhvcml6YXRpb24gOiBOU09iamVjdAogQHByb3BlcnR5ICh3ZWFrKSBpZDxTT0F1dGhv
cml6YXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGU7CiBAcHJvcGVydHkgKHJldGFpbiwgbnVsbGFibGUp
IGRpc3BhdGNoX3F1ZXVlX3QgZGVsZWdhdGVEaXNwYXRjaFF1ZXVlOwogQHByb3BlcnR5IChjb3B5
LCBub25hdG9taWMpIE5TRGljdGlvbmFyeSAqYXV0aG9yaXphdGlvbk9wdGlvbnM7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYykgQk9PTCBlbmFibGVFbWJlZGRlZEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlcjsKKy0gKHZvaWQpZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDooTlNVUkwgKil1cmwg
cmVzcG9uc2VDb2RlOihOU0ludGVnZXIpcmVzcG9uc2VDb2RlIGNvbXBsZXRpb246KHZvaWQgKF4p
KFNPQXV0aG9yaXphdGlvbkhpbnRzICogX051bGxhYmxlIGF1dGhvcml6YXRpb25IaW50cywgTlNF
cnJvciAqIF9OdWxsYWJsZSBlcnJvcikpY29tcGxldGlvbjsKICsgKEJPT0wpY2FuUGVyZm9ybUF1
dGhvcml6YXRpb25XaXRoVVJMOihOU1VSTCAqKXVybCByZXNwb25zZUNvZGU6KE5TSW50ZWdlcily
ZXNwb25zZUNvZGU7CiArIChCT09MKWNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDooTlNV
UkwgKil1cmwgcmVzcG9uc2VDb2RlOihOU0ludGVnZXIpcmVzcG9uc2VDb2RlIHVzZUludGVybmFs
RXh0ZW5zaW9uczooQk9PTCl1c2VJbnRlcm5hbEV4dGVuc2lvbnM7CiAtICh2b2lkKWJlZ2luQXV0
aG9yaXphdGlvbldpdGhVUkw6KE5TVVJMICopdXJsIGh0dHBIZWFkZXJzOihOU0RpY3Rpb25hcnkg
PE5TU3RyaW5nICosIE5TU3RyaW5nICo+ICopaHR0cEhlYWRlcnMgaHR0cEJvZHk6KE5TRGF0YSAq
KWh0dHBCb2R5OwpAQCAtODcsNiArMTAzLDggQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwg
U09BdXRob3JpemF0aW9uSW5pdGlhdGluZ0FjdGlvbikgewogLSAodm9pZCljYW5jZWxBdXRob3Jp
emF0aW9uOwogQGVuZAogCitAZW5kCisKIE5TX0FTU1VNRV9OT05OVUxMX0VORAogCiAjZW5kaWYg
Ly8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0
aW9uU2Vzc2lvbi5oCmluZGV4IDJhNjIwYzUxOTMyYmRmZmIzNDlmZGUyNzExYjE1NWVjMTMyYjRl
NDkuLjIzZTI3MDc1ZmY2MzVlMWRiMWZhMjRhYmMwN2M5MTE0MGIyZTgzMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6
YXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRo
b3JpemF0aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24uaApAQCAtNDgsNiArNDgsOCBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUGFnZVByb3h5OwogCitlbnVtIGNsYXNzIFNPQXV0
aG9yaXphdGlvbkxvYWRQb2xpY3kgOiB1aW50OF90OworCiAvLyBBIHNlc3Npb24gd2lsbCBvbmx5
IGJlIGV4ZWN1dGVkIG9uY2UuCiBjbGFzcyBTT0F1dGhvcml6YXRpb25TZXNzaW9uIDogcHVibGlj
IFJlZkNvdW50ZWQ8U09BdXRob3JpemF0aW9uU2Vzc2lvbj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxTT0F1dGhvcml6YXRpb25TZXNzaW9uPiB7CiBwdWJsaWM6CkBAIC0xMDIsNiArMTA0LDggQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgYmVjb21lQ29tcGxldGVkKCk7CiAgICAgdm9pZCBkaXNtaXNz
Vmlld0NvbnRyb2xsZXIoKTsKKyAgICB2b2lkIGNvbnRpbnVlU3RhcnRBZnRlckdldEF1dGhvcml6
YXRpb25IaW50cyhjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGNvbnRpbnVlU3RhcnRBZnRlckRl
Y2lkZVBvbGljeShjb25zdCBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5Jik7CiAKICAgICBTdGF0
ZSBtX3N0YXRlICB7IFN0YXRlOjpJZGxlIH07CiAgICAgV2Vha09iakNQdHI8U09BdXRob3JpemF0
aW9uICo+IG1fc29BdXRob3JpemF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24ubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0
aW9uU2Vzc2lvbi5tbQppbmRleCBjOTVjMzM2MGZhZmE2NTQxZDlmNWI5OGMyOThkZjUzNmZlMDE3
NmZmLi5jMzczNGJlZDNmYjc4MzU5MDk5MjczN2JiZTE1ZTE3ZDgzMDdiYzM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3Jp
emF0aW9uU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1
dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQpAQCAtNDEsNiArNDEsNyBAQAog
I2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Nl
Y3VyaXR5T3JpZ2luLmg+CiAjaW1wb3J0IDxwYWwvY29jb2EvQXBwU1NPU29mdExpbmsuaD4KKyNp
bXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogCiAjZGVmaW5l
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKG1fcGFnZSAm
JiBtX3BhZ2UtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBBcHBTU08sICIlcCAtIFtJbml0
aWF0aW5nQWN0aW9uPSVzXSBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjoiIGZtdCwgdGhpcywgdG9T
dHJpbmcobV9hY3Rpb24pLCAjI19fVkFfQVJHU19fKQpAQCAtMTI4LDQ2ICsxMjksNjYgQEAgdm9p
ZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpzdGFydCgpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgic3RhcnQ6Iik7CiAKLSAgICBBU1NFUlQoKG1fc3RhdGUgPT0gU3RhdGU6OklkbGUg
fHwgbV9zdGF0ZSA9PSBTdGF0ZTo6V2FpdGluZykgJiYgbV9wYWdlICYmIG1fbmF2aWdhdGlvbkFj
dGlvbik7CisgICAgQVNTRVJUKChtX3N0YXRlID09IFN0YXRlOjpJZGxlIHx8IG1fc3RhdGUgPT0g
U3RhdGU6OldhaXRpbmcpICYmIG1fbmF2aWdhdGlvbkFjdGlvbik7CiAgICAgbV9zdGF0ZSA9IFN0
YXRlOjpBY3RpdmU7CisgICAgW21fc29BdXRob3JpemF0aW9uIGdldEF1dGhvcml6YXRpb25IaW50
c1dpdGhVUkw6bV9uYXZpZ2F0aW9uQWN0aW9uLT5yZXF1ZXN0KCkudXJsKCkgcmVzcG9uc2VDb2Rl
OjAgY29tcGxldGlvbjptYWtlQmxvY2tQdHIoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpXSAoU09BdXRob3JpemF0aW9uSGludHMgKmF1dGhvcml6YXRpb25IaW50cywgTlNFcnJv
ciAqZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IFJlY2Vp
dmUgU09BdXRob3JpemF0aW9uSGludHMgKGVycm9yPSVsZCkiLCBlcnJvciA/IGVycm9yLmNvZGUg
OiAwKTsKIAotICAgIG1fcGFnZS0+ZGVjaWRlUG9saWN5Rm9yU09BdXRob3JpemF0aW9uTG9hZChl
bXB0eVN0cmluZygpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChTT0F1
dGhvcml6YXRpb25Mb2FkUG9saWN5IHBvbGljeSkgewotICAgICAgICBpZiAoIXdlYWtUaGlzKQor
ICAgICAgICBpZiAoIXdlYWtUaGlzIHx8IGVycm9yIHx8ICFhdXRob3JpemF0aW9uSGludHMpCiAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNvbnRpbnVlU3RhcnRBZnRlckdldEF1dGhvcml6
YXRpb25IaW50cyhhdXRob3JpemF0aW9uSGludHMubG9jYWxpemVkRXh0ZW5zaW9uQnVuZGxlRGlz
cGxheU5hbWUpOworICAgIH0pLmdldCgpXTsKK30KIAotICAgICAgICBpZiAocG9saWN5ID09IFNP
QXV0aG9yaXphdGlvbkxvYWRQb2xpY3k6Oklnbm9yZSkgewotICAgICAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgic3RhcnQ6IFJlY2VpdmUgU09BdXRob3JpemF0aW9uTG9hZFBvbGljeTo6
SWdub3JlIik7Cit2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OmNvbnRpbnVlU3RhcnRBZnRl
ckdldEF1dGhvcml6YXRpb25IaW50cyhjb25zdCBTdHJpbmcmIGhpbnRzKQoreworICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVlU3RhcnRBZnRlckdldEF1dGhvcml6YXRpb25IaW50
czogKGhpbnRzPSVzKSIsIGhpbnRzLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgICAgICBmYWxs
QmFja1RvV2ViUGF0aCgpOworICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBY3RpdmUpOwor
ICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BhZ2UtPmRlY2lkZVBv
bGljeUZvclNPQXV0aG9yaXphdGlvbkxvYWQoaGludHMsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKV0gKFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3kgcG9saWN5KSB7CisgICAg
ICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAg
ICAgY29udGludWVTdGFydEFmdGVyRGVjaWRlUG9saWN5KHBvbGljeSk7CisgICAgfSk7Cit9CiAK
LSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IFJlY2VpdmUgU09BdXRob3Jp
emF0aW9uTG9hZFBvbGljeTo6QWxsb3ciKTsKK3ZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6
Y29udGludWVTdGFydEFmdGVyRGVjaWRlUG9saWN5KGNvbnN0IFNPQXV0aG9yaXphdGlvbkxvYWRQ
b2xpY3kmIHBvbGljeSkKK3sKKyAgICBpZiAocG9saWN5ID09IFNPQXV0aG9yaXphdGlvbkxvYWRQ
b2xpY3k6Oklnbm9yZSkgeworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjb250aW51
ZVN0YXJ0QWZ0ZXJEZWNpZGVQb2xpY3k6IFJlY2VpdmUgU09BdXRob3JpemF0aW9uTG9hZFBvbGlj
eTo6SWdub3JlIik7CiAKLSAgICAgICAgaWYgKCFtX3NvQXV0aG9yaXphdGlvbiB8fCAhbV9wYWdl
IHx8ICFtX25hdmlnYXRpb25BY3Rpb24pCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGZh
bGxCYWNrVG9XZWJQYXRoKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICAgICAgLy8g
RklYTUU6IDxyZGFyOi8vcHJvYmxlbS80ODkwOTMzNj4gUmVwbGFjZSB0aGUgYmVsb3cgd2l0aCBB
cHBTU08gY29uc3RhbnRzLgotICAgICAgICBhdXRvIGluaXRpYXRvck9yaWdpbiA9IGVtcHR5U3Ry
aW5nKCk7Ci0gICAgICAgIGlmIChtX25hdmlnYXRpb25BY3Rpb24tPnNvdXJjZUZyYW1lKCkpCi0g
ICAgICAgICAgICBpbml0aWF0b3JPcmlnaW4gPSBtX25hdmlnYXRpb25BY3Rpb24tPnNvdXJjZUZy
YW1lKCktPnNlY3VyaXR5T3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpOwotICAg
ICAgICBpZiAobV9hY3Rpb24gPT0gSW5pdGlhdGluZ0FjdGlvbjo6U3ViRnJhbWUgJiYgbV9wYWdl
LT5tYWluRnJhbWUoKSkKLSAgICAgICAgICAgIGluaXRpYXRvck9yaWdpbiA9IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUobV9wYWdlLT5tYWluRnJhbWUoKS0+dXJsKCkpLT50b1N0cmlu
ZygpOwotICAgICAgICBOU0RpY3Rpb25hcnkgKmF1dGhvcml6YXRpb25PcHRpb25zID0gQHsKLSAg
ICAgICAgICAgIFNPQXV0aG9yaXphdGlvbk9wdGlvblVzZXJBY3Rpb25Jbml0aWF0ZWQ6IEAobV9u
YXZpZ2F0aW9uQWN0aW9uLT5pc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKSwKLSAgICAgICAgICAg
IEAiaW5pdGlhdG9yT3JpZ2luIjogKE5TU3RyaW5nICopaW5pdGlhdG9yT3JpZ2luLAotICAgICAg
ICAgICAgQCJpbml0aWF0aW5nQWN0aW9uIjogQChzdGF0aWNfY2FzdDxOU0ludGVnZXI+KG1fYWN0
aW9uKSkKLSAgICAgICAgfTsKLSAgICAgICAgW21fc29BdXRob3JpemF0aW9uIHNldEF1dGhvcml6
YXRpb25PcHRpb25zOmF1dGhvcml6YXRpb25PcHRpb25zXTsKKyAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJjb250aW51ZVN0YXJ0QWZ0ZXJEZWNpZGVQb2xpY3k6IFJlY2VpdmUgU09BdXRob3Jp
emF0aW9uTG9hZFBvbGljeTo6QWxsb3ciKTsKKworICAgIGlmICghbV9zb0F1dGhvcml6YXRpb24g
fHwgIW1fcGFnZSB8fCAhbV9uYXZpZ2F0aW9uQWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzQ4OTA5MzM2PiBSZXBsYWNlIHRoZSBiZWxvdyB3
aXRoIEFwcFNTTyBjb25zdGFudHMuCisgICAgYXV0byBpbml0aWF0b3JPcmlnaW4gPSBlbXB0eVN0
cmluZygpOworICAgIGlmIChtX25hdmlnYXRpb25BY3Rpb24tPnNvdXJjZUZyYW1lKCkpCisgICAg
ICAgIGluaXRpYXRvck9yaWdpbiA9IG1fbmF2aWdhdGlvbkFjdGlvbi0+c291cmNlRnJhbWUoKS0+
c2VjdXJpdHlPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCk7CisgICAgaWYgKG1f
YWN0aW9uID09IEluaXRpYXRpbmdBY3Rpb246OlN1YkZyYW1lICYmIG1fcGFnZS0+bWFpbkZyYW1l
KCkpCisgICAgICAgIGluaXRpYXRvck9yaWdpbiA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUobV9wYWdlLT5tYWluRnJhbWUoKS0+dXJsKCkpLT50b1N0cmluZygpOworICAgIE5TRGlj
dGlvbmFyeSAqYXV0aG9yaXphdGlvbk9wdGlvbnMgPSBAeworICAgICAgICBTT0F1dGhvcml6YXRp
b25PcHRpb25Vc2VyQWN0aW9uSW5pdGlhdGVkOiBAKG1fbmF2aWdhdGlvbkFjdGlvbi0+aXNQcm9j
ZXNzaW5nVXNlckdlc3R1cmUoKSksCisgICAgICAgIEAiaW5pdGlhdG9yT3JpZ2luIjogKE5TU3Ry
aW5nICopaW5pdGlhdG9yT3JpZ2luLAorICAgICAgICBAImluaXRpYXRpbmdBY3Rpb24iOiBAKHN0
YXRpY19jYXN0PE5TSW50ZWdlcj4obV9hY3Rpb24pKQorICAgIH07CisgICAgW21fc29BdXRob3Jp
emF0aW9uIHNldEF1dGhvcml6YXRpb25PcHRpb25zOmF1dGhvcml6YXRpb25PcHRpb25zXTsKIAog
I2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgaWYgKCFbZnJvbVdlYlBhZ2VQcm94eSgqbV9wYWdl
KS5VSURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3ByZXNlbnRpbmdWaWV3
Q29udHJvbGxlckZvcldlYlZpZXc6KV0pCi0gICAgICAgICAgICBbbV9zb0F1dGhvcml6YXRpb24g
c2V0RW5hYmxlRW1iZWRkZWRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6Tk9dOworICAgIGlm
ICghW2Zyb21XZWJQYWdlUHJveHkoKm1fcGFnZSkuVUlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF9wcmVzZW50aW5nVmlld0NvbnRyb2xsZXJGb3JXZWJWaWV3OildKQorICAg
ICAgICBbbV9zb0F1dGhvcml6YXRpb24gc2V0RW5hYmxlRW1iZWRkZWRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXI6Tk9dOwogI2VuZGlmCiAKLSAgICAgICAgYXV0byAqbnNSZXF1ZXN0ID0gbV9u
YXZpZ2F0aW9uQWN0aW9uLT5yZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5
VXBkYXRlUG9saWN5OjpVcGRhdGVIVFRQQm9keSk7Ci0gICAgICAgIFttX3NvQXV0aG9yaXphdGlv
biBiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOm5zUmVxdWVzdC5VUkwgaHR0cEhlYWRlcnM6bnNS
ZXF1ZXN0LmFsbEhUVFBIZWFkZXJGaWVsZHMgaHR0cEJvZHk6bnNSZXF1ZXN0LkhUVFBCb2R5XTsK
LSAgICB9KTsKKyAgICBhdXRvICpuc1JlcXVlc3QgPSBtX25hdmlnYXRpb25BY3Rpb24tPnJlcXVl
c3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVwZGF0ZUhU
VFBCb2R5KTsKKyAgICBbbV9zb0F1dGhvcml6YXRpb24gYmVnaW5BdXRob3JpemF0aW9uV2l0aFVS
TDpuc1JlcXVlc3QuVVJMIGh0dHBIZWFkZXJzOm5zUmVxdWVzdC5hbGxIVFRQSGVhZGVyRmllbGRz
IGh0dHBCb2R5Om5zUmVxdWVzdC5IVFRQQm9keV07CiB9CiAKIHZvaWQgU09BdXRob3JpemF0aW9u
U2Vzc2lvbjo6ZmFsbEJhY2tUb1dlYlBhdGgoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU4MTgxYTg4ZTFmZmI4NGUzMWJhMWU0N2E5Y2ZjNGIz
NzY5MDY0NzMuLjY0MTc3NzliZTY1YWU4YzU5NDYwN2M4NzkyZTU0NjNhMDUyMDczMTUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAyMC0wMS0zMSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFBhc3MgYSBoaW50IGZyb20gdGhlIGV4dGVuc2lvbiB0byBkZWNpZGVQb2xpY3lGb3JT
T0F1dGhvcml6YXRpb25Mb2FkV2l0aEN1cnJlbnRQb2xpY3kKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzA3OQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNDgyOTA0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Rlc3RTT0F1dGhvcml6YXRp
b24ubW06CisgICAgICAgICgtW1Rlc3RTT0F1dGhvcml6YXRpb25EZWxlZ2F0ZSBfd2ViVmlldzpk
ZWNpZGVQb2xpY3lGb3JTT0F1dGhvcml6YXRpb25Mb2FkV2l0aEN1cnJlbnRQb2xpY3k6Zm9yRXh0
ZW5zaW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAob3ZlcnJpZGVHZXRBdXRob3Jp
emF0aW9uSGludHNXaXRoVVJMKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAy
MDIwLTAxLTMwICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgYW5vdGhlciBzcGVjdWxhdGl2ZSB0ZXN0IGZpeCBhZnRlciByMjU1MDQxCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Rlc3RTT0F1
dGhvcml6YXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Rl
c3RTT0F1dGhvcml6YXRpb24ubW0KaW5kZXggN2UwYTJjMmRlYmY3MDgzNmQwNTg5ODg0OWJhZTI3
YzJhNDcxMjk2Yy4uOTczMGFjNThmYTZlODgzYjhhOGE3MWM1MzVhMWUxMWI4ZDhkMWUyZiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXN0U09BdXRo
b3JpemF0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
VGVzdFNPQXV0aG9yaXphdGlvbi5tbQpAQCAtMTkyLDcgKzE5Miw3IEBAIC0gKFdLV2ViVmlldyAq
KXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY3JlYXRlV2ViVmlld1dpdGhDb25maWd1cmF0
aW9uOihXS1dlCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBv
bGljeUZvclNPQXV0aG9yaXphdGlvbkxvYWRXaXRoQ3VycmVudFBvbGljeTooX1dLU09BdXRob3Jp
emF0aW9uTG9hZFBvbGljeSlwb2xpY3kgZm9yRXh0ZW5zaW9uOihOU1N0cmluZyAqKWV4dGVuc2lv
biBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLU09BdXRob3JpemF0aW9uTG9hZFBvbGlj
eSBwb2xpY3kpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgRVhQRUNUX0VRKHBvbGljeSwgX1dL
U09BdXRob3JpemF0aW9uTG9hZFBvbGljeUFsbG93KTsKLSAgICBFWFBFQ1RfVFJVRShbZXh0ZW5z
aW9uIGlzRXF1YWw6QCIiXSk7CisgICAgRVhQRUNUX1RSVUUoW2V4dGVuc2lvbiBpc0VxdWFsOkAi
VGVzdCJdKTsKICAgICBpZiAoIXNlbGYuaXNBc3luY0V4ZWN1dGlvbikgewogICAgICAgICBpZiAo
c2VsZi5hbGxvd1NPQXV0aG9yaXphdGlvbkxvYWQpCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihwb2xpY3kpOwpAQCAtMzAwLDYgKzMwMCwxNSBAQCBzdGF0aWMgdm9pZCBvdmVycmlkZUNh
bmNlbEF1dGhvcml6YXRpb24oaWQsIFNFTCkKICAgICBhdXRob3JpemF0aW9uQ2FuY2VsbGVkID0g
dHJ1ZTsKIH0KIAordXNpbmcgR2V0QXV0aG9yaXphdGlvbkhpbnRzQ2FsbGJhY2sgPSB2b2lkIChe
KShTT0F1dGhvcml6YXRpb25IaW50cyAqYXV0aG9yaXphdGlvbkhpbnRzLCBOU0Vycm9yICplcnJv
cik7CitzdGF0aWMgdm9pZCBvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwoaWQs
IFNFTCwgTlNVUkwgKnVybCwgTlNJbnRlZ2VyIHJlc3BvbnNlQ29kZSwgR2V0QXV0aG9yaXphdGlv
bkhpbnRzQ2FsbGJhY2sgY29tcGxldGlvbikKK3sKKyAgICBFWFBFQ1RfRVEocmVzcG9uc2VDb2Rl
LCAwbCk7CisgICAgYXV0byBzb0F1dGhvcml6YXRpb25IaW50c0NvcmUgPSBhZG9wdE5TKFtQQUw6
OmFsbG9jU09BdXRob3JpemF0aW9uSGludHNDb3JlSW5zdGFuY2UoKSBpbml0V2l0aExvY2FsaXpl
ZEV4dGVuc2lvbkJ1bmRsZURpc3BsYXlOYW1lOkAiVGVzdCJdKTsKKyAgICBhdXRvIHNvQXV0aG9y
aXphdGlvbkhpbnRzID0gYWRvcHROUyhbUEFMOjphbGxvY1NPQXV0aG9yaXphdGlvbkhpbnRzSW5z
dGFuY2UoKSBpbml0V2l0aEF1dGhvcml6YXRpb25IaW50c0NvcmU6c29BdXRob3JpemF0aW9uSGlu
dHNDb3JlLmdldCgpXSk7CisgICAgY29tcGxldGlvbihzb0F1dGhvcml6YXRpb25IaW50cy5nZXQo
KSwgbnVsbHB0cik7Cit9CisKICNpZiBQTEFURk9STShNQUMpCiB1c2luZyBOb3RpZmljYXRpb25D
YWxsYmFjayA9IHZvaWQgKF4pKE5TTm90aWZpY2F0aW9uICpub3RlKTsKIHN0YXRpYyBpZCBvdmVy
cmlkZUFkZE9ic2VydmVyRm9yTmFtZShpZCwgU0VMLCBOU05vdGlmaWNhdGlvbk5hbWUgbmFtZSwg
aWQsIE5TT3BlcmF0aW9uUXVldWUgKiwgTm90aWZpY2F0aW9uQ2FsbGJhY2sgYmxvY2spCkBAIC0z
ODYsNyArMzk1LDggQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgTm9JbnRlcmNlcHRp
b25zKQogVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uRXJyb3IpCiB7
CiAgICAgcmVzZXRTdGF0ZSgpOwotICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIoUEFM
OjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6
YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBDbGFzc01ldGhvZFN3aXp6
bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rvcihj
YW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0
X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAg
IEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9u
Q2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VD
b2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9y
aXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0g
W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVu
c2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAK
QEAgLTQwNiw2ICs0MTYsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNl
cHRpb25Eb05vdEhhbmRsZSkKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6
OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXph
dGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlk
ZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dp
enpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9y
KHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRl
KSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhv
cml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRw
SGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1
dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxl
cjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXph
dGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9j
YXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBS
ZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJl
c291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVz
dFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKIApAQCAtNDI5LDYgKzQ0MCw3IEBAIFRFU1QoU09BdXRo
b3JpemF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvbkNhbmNlbCkKICAgICBDbGFzc01ldGhvZFN3
aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rv
cihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJw
cmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwog
ICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0
aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6
emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRo
b3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0
PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VN
ZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBA
c2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxl
dGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGlu
dHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxl
IG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRt
bCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKIApAQCAtNDUyLDYg
KzQ2NCw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvbkNvbXBs
ZXRlV2l0aG91dERhdGEpCiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpn
ZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRp
b25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVD
YW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6
bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rvcihz
ZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkp
OwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3Jp
emF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhl
YWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRo
b3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0
KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRp
b25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0
YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNv
dXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RX
ZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTQ3NSw2ICs0ODgsNyBAQCBURVNUKFNPQXV0aG9y
aXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25VbmV4cGVjdGVkQ29tcGxldGlvbikKICAgICBD
bGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNz
KCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2Rl
OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9u
V2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0
U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJw
cmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RT
d2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0
b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWlu
dGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7Cisg
ICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRp
b25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25z
ZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRo
b3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwg
PSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0
ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsK
IApAQCAtNDk5LDYgKzUxMyw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIEludGVy
Y2VwdGlvblN1Y2NlZWQxKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6
Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0
aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRl
Q2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6
emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Io
c2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUp
KTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9y
aXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBI
ZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0
aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVy
NChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0
aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJl
dGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVz
b3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0
V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC01MzMsNiArNTQ4LDcgQEAgVEVTVChTT0F1dGhv
cml6YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uU3VjY2VlZDIpCiAgICAgQ2xhc3NNZXRob2RT
d2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0
b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVy
cHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsK
ICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXph
dGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElN
UD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dp
enpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0
aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNl
TWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwg
QHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBs
ZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhp
bnRzV2l0aFVSTCkpOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKICAg
ICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RTT0F1dGhvcml6YXRpb25CYXNpY0RlbGVn
YXRlIGFsbG9jXSBpbml0XSk7CkBAIC01NjcsNiArNTgzLDcgQEAgVEVTVChTT0F1dGhvcml6YXRp
b25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uU3VjY2VlZDMpCiAgICAgQ2xhc3NNZXRob2RTd2l6emxl
ciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2Fu
UGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9j
YXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJ
bnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNs
YXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3Zl
cnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIz
KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXph
dGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9k
U3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVj
dG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0
aFVSTCkpOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKICAgICBhdXRv
IGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RTT0F1dGhvcml6YXRpb25EZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOwpAQCAtNjAyLDYgKzYxOSw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3Qs
IEludGVyY2VwdGlvblN1Y2NlZWQ0KQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIx
KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRo
b3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92
ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRo
b2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2Vs
ZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVs
ZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNP
QXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJM
Omh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJl
Z2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3
aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRo
b3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJw
cmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAog
ICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJM
Rm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6
QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC02MzIsNiArNjUwLDcgQEAgVEVTVChT
T0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uU3VjY2VlZFdpdGhPdGhlckh0dHBT
dGF0dXNDb2RlKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09B
dXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0
aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVy
Zm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBz
d2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVs
ZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAg
ICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlv
bkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJz
Omh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXph
dGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6
OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGlu
dHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0
cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6
QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0
QVBJLnJlc291cmNlcyJdOwogCkBAIC02NTYsNiArNjc1LDcgQEAgVEVTVChTT0F1dGhvcml6YXRp
b25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uU3VjY2VlZFdpdGhDb29raWUpCiAgICAgQ2xhc3NNZXRo
b2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2Vs
ZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWlu
dGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwp
KTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9y
aXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0
PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIg
c3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2lu
QXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRf
Y2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3Rh
bmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3Mo
KSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNv
bXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlv
bkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpA
Imh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTY5
MSw2ICs3MTEsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25T
dWNjZWVkV2l0aENvb2tpZXMpCiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFM
OjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6
YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3
aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rv
cihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0
ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRo
b3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0
cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5B
dXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenps
ZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6
YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRf
Y2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAg
UmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JS
ZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRl
c3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTcyNyw2ICs3NDgsNyBAQCBURVNUKFNPQXV0
aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25TdWNjZWVkV2l0aFJlZGlyZWN0aW9uQW5k
Q29va2llKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRo
b3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVS
TDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9y
bUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6
emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdh
dGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJ
bnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNs
YXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0
dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlv
bldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6Omdl
dFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNX
aXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihv
dmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1h
a2UoMCwgMCwgMzIwLCA1MDApXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0
U09BdXRob3JpemF0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKQEAgLTc2Niw2ICs3ODgsNyBA
QCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25TdWNjZWVkV2l0aERp
ZmZlcmVudE9yaWdpbikKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6Omdl
dFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlv
bldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNh
blBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenps
ZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNl
dERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7
CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6
YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVh
ZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhv
cml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQo
UEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlv
bkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0
PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRh
aW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291
cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdl
YktpdEFQSS5yZXNvdXJjZXMiXTsKIApAQCAtNzkwLDYgKzgxMyw3IEBAIFRFU1QoU09BdXRob3Jp
emF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvblN1Y2NlZWRXaXRoV2FpdGluZ1Nlc3Npb24pCiAg
ICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25D
bGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNl
Q29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXph
dGlvbldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6
OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWlu
dGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0
aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNl
bGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkp
OworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3Jp
emF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVz
cG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0
QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0
VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0
aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2Vz
Il07CiAKQEAgLTgyNSw2ICs4NDksNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJ
bnRlcmNlcHRpb25BYm9ydGVkV2l0aFdhaXRpbmdTZXNzaW9uKQogICAgIENsYXNzTWV0aG9kU3dp
enpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9y
KGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnBy
ZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAg
ICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRp
b25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6
bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhv
cml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8
SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1l
dGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBz
ZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0
aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50
c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTDEgPSBbW05TQnVuZGxl
IG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRt
bCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKICAgICBSZXRhaW5Q
dHI8TlNVUkw+IHRlc3RVUkwyID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJj
ZTpAInNpbXBsZTIiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2Vi
S2l0QVBJLnJlc291cmNlcyJdOwpAQCAtODU0LDYgKzg3OSw3IEBAIFRFU1QoU09BdXRob3JpemF0
aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvblN1Y2NlZWRXaXRoQWN0aXZlU2Vzc2lvbkRpZE1vdmVX
aW5kb3cpCiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhv
cml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJM
OnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3Jt
QXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6
bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0
ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIElu
c3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xh
c3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0
cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9u
V2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0
U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dp
dGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92
ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5T
VVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNp
bXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEku
cmVzb3VyY2VzIl07CiAKQEAgLTg4NSw2ICs5MTEsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJl
ZGlyZWN0LCBJbnRlcmNlcHRpb25TdWNjZWVkVHdpY2UpCiAgICAgQ2xhc3NNZXRob2RTd2l6emxl
ciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2Fu
UGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9j
YXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJ
bnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNs
YXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3Zl
cnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIz
KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXph
dGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9k
U3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVj
dG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0
aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWlu
QnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1
YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTkxOCw2ICs5NDUs
NyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25TdWNjZWVkU3Vw
cHJlc3NBY3RpdmVTZXNzaW9uKQogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIy
KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFu
Y2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygp
LCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9k
eTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRo
VVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1
dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuY2VsQXV0aG9yaXphdGlvbiksIHJlaW50
ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhbmNlbEF1dGhvcml6YXRpb24pKTsKKyAgICBJbnN0
YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNz
KCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpj
b21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRp
b25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246
QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC05
NTMsNiArOTgxLDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9u
U3VjY2VlZFN1cHByZXNzV2FpdGluZ1Nlc3Npb24pCiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBz
d2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVy
Zm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0
PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0
YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNz
KCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBB
TDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlv
bldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92
ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dp
enpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9y
KGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVS
TCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTk5NCw2ICsxMDIzLDcg
QEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uU3VjY2VlZFNBTUwp
CiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRp
b25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3Bv
bnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9y
aXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQ
QUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCBy
ZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNl
TWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwg
QHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVS
TCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRo
b3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6
cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRl
R2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiB0
ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIg
d2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3Vy
Y2VzIl07CiAKQEAgLTEwMjIsNiArMTA1Miw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJl
Y3QsIEludGVyY2VwdGlvblN1Y2NlZWRTQU1MV2l0aFBTT04pCiAgICAgQ2xhc3NNZXRob2RTd2l6
emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Io
Y2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJl
dF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAg
ICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlv
bkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4o
b3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenps
ZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9y
aXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJ
TVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0
aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNl
bGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRp
b246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRz
V2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiBiYXNlVVJMID0gW1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZTMiIHdpdGhFeHRlbnNpb246QCJodG1s
IiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogICAgIGF1dG8gdGVz
dFVSTCA9IFVSTChVUkwoKSwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKTsKQEAgLTEwNTUsNiAr
MTA4Niw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIEF1dGhvcml6YXRpb25PcHRp
b25zKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3Jp
emF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpy
ZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1
dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxl
cjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0
YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNz
KCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBC
b2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldp
dGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNP
QXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRo
VVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVy
cmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2Uo
MCwgMCwgMzIwLCA1MDApXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0U09B
dXRob3JpemF0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKQEAgLTEwNzUsNiArMTEwNyw3IEBA
IFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvbkRpZE5vdEhhbmRsZVR3
aWNlKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3Jp
emF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpy
ZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1
dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxl
cjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0
YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNz
KCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBC
b2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldp
dGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNP
QXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRo
VVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVy
cmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VS
TD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1w
bGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJl
c291cmNlcyJdOwogCkBAIC0xMDk2LDYgKzExMjksNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJl
ZGlyZWN0LCBJbnRlcmNlcHRpb25Db21wbGV0ZVR3aWNlKQogICAgIENsYXNzTWV0aG9kU3dpenps
ZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNh
blBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRf
Y2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAg
SW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25D
bGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92
ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVy
MyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6
YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhv
ZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxl
Y3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9u
OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dp
dGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBz
dWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC0xMTE2LDcgKzEx
NTAsOCBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25Db21wbGV0
ZVR3aWNlKQogVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgU09BdXRob3JpemF0aW9uTG9h
ZFBvbGljeUlnbm9yZSkKIHsKICAgICByZXNldFN0YXRlKCk7Ci0gICAgQ2xhc3NNZXRob2RTd2l6
emxlciBzd2l6emxlcihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rvcihj
YW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0
X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAg
IENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xh
c3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNv
ZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRp
b25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpn
ZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRz
V2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4o
b3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8
TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAi
c2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQ
SS5yZXNvdXJjZXMiXTsKIApAQCAtMTEzNyw2ICsxMTcyLDcgQEAgVEVTVChTT0F1dGhvcml6YXRp
b25SZWRpcmVjdCwgU09BdXRob3JpemF0aW9uTG9hZFBvbGljeUFsbG93QXN5bmMpCiAgICAgQ2xh
c3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygp
LCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTop
LCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldp
dGhVUkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNP
QXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJl
dF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dp
enpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9y
KGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAg
IEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9u
Q2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VD
b2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9y
aXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0g
W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVu
c2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAK
QEAgLTExNjIsNyArMTE5OCw4IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIFNPQXV0
aG9yaXphdGlvbkxvYWRQb2xpY3lBbGxvd0FzeW5jKQogVEVTVChTT0F1dGhvcml6YXRpb25SZWRp
cmVjdCwgU09BdXRob3JpemF0aW9uTG9hZFBvbGljeUlnbm9yZUFzeW5jKQogewogICAgIHJlc2V0
U3RhdGUoKTsKLSAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyKFBBTDo6Z2V0U09BdXRo
b3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVS
TDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9y
bUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxl
cjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1
dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4o
b3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1l
dGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBz
ZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0
aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50
c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUg
bWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1s
IiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC0xMTg3LDYg
KzEyMjQsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25TdWNj
ZWVkV2l0aFVJKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09B
dXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0
aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVy
Zm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBz
d2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVs
ZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAg
ICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlv
bkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJz
Omh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXph
dGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6
OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGlu
dHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0
cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6
QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0
QVBJLnJlc291cmNlcyJdOwogCkBAIC0xMjIwLDYgKzEyNTgsNyBAQCBURVNUKFNPQXV0aG9yaXph
dGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25DYW5jZWxXaXRoVUkpCiAgICAgQ2xhc3NNZXRob2RT
d2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0
b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVy
cHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsK
ICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXph
dGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElN
UD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dp
enpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0
aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNl
TWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwg
QHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBs
ZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhp
bnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0
bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTEyNTIs
NiArMTI5MSw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvbkVy
cm9yV2l0aFVJKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09B
dXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0
aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVy
Zm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBz
d2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVs
ZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAg
ICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlv
bkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJz
Omh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXph
dGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6
OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGlu
dHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0
cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6
QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0
QVBJLnJlc291cmNlcyJdOwogCkBAIC0xMjg0LDYgKzEzMjQsNyBAQCBURVNUKFNPQXV0aG9yaXph
dGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25TdWNjZWVkU3VwcHJlc3NBY3RpdmVTZXNzaW9uV2l0
aFVJKQogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRo
b3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxl
ciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVn
aW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJl
dF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5z
dGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFz
cygpLCBAc2VsZWN0b3IoY2FuY2VsQXV0aG9yaXphdGlvbiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihvdmVycmlkZUNhbmNlbEF1dGhvcml6YXRpb24pKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6
bGVyIHN3aXp6bGVyNShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rvcihn
ZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwp
KTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC0xMzIzLDYgKzEzNjQsNyBA
QCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBTaG93VUlUd2ljZSkKICAgICBDbGFzc01l
dGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBz
ZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVS
TCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRo
b3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxl
ciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVn
aW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJl
dF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5z
dGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFz
cygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6
Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0
aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05T
QnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9u
OkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKIApAQCAt
MTM2MCw2ICsxNDAyLDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgTlNOb3RpZmlj
YXRpb25DZW50ZXIpCiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRT
T0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25X
aXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5Q
ZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVy
IHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXRE
ZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwog
ICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0
aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRl
cnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3Jp
emF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBB
TDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25I
aW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJ
TVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWlu
UHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJj
ZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJL
aXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTE0MjAsNiArMTQ2Myw3IEBAIFRFU1QoU09BdXRob3Jp
emF0aW9uUG9wVXAsIE5vSW50ZXJjZXB0aW9uc1N1YkZyYW1lKQogICAgIENsYXNzTWV0aG9kU3dp
enpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9y
KGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnBy
ZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAg
ICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRp
b25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6
bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhv
cml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8
SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1l
dGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBz
ZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0
aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50
c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gYmFzZVVSTCA9IFtbTlNCdW5kbGUg
bWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRt
bCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKICAgICBSZXRhaW5Q
dHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNl
OkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktp
dEFQSS5yZXNvdXJjZXMiXTsKQEAgLTE0NDYsNiArMTQ5MCw3IEBAIFRFU1QoU09BdXRob3JpemF0
aW9uUG9wVXAsIE5vSW50ZXJjZXB0aW9uc1dpdGhvdXRVc2VyR2VzdHVyZSkKICAgICBDbGFzc01l
dGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBz
ZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVS
TCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRo
b3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxl
ciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVn
aW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJl
dF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5z
dGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFz
cygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6
Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0
aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICAvLyBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBqYXZhU2Ny
aXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5IGlzIE5PIG9uIGlPUywgYW5kIFlFUyBvbiBt
YWNPUy4KICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMTQ2Niw2ICsxNTExLDcgQEAgVEVTVChTT0F1dGhv
cml6YXRpb25Qb3BVcCwgSW50ZXJjZXB0aW9uRXJyb3IpCiAgICAgQ2xhc3NNZXRob2RTd2l6emxl
ciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2Fu
UGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9j
YXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJ
bnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNs
YXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3Zl
cnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIz
KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXph
dGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9k
U3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVj
dG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0
aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiBiYXNlVVJMID0gW1tOU0J1bmRsZSBtYWlu
QnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZTIiIHdpdGhFeHRlbnNpb246QCJodG1sIiBz
dWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogICAgIFJldGFpblB0cjxO
U1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJz
aW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdOwpAQCAtMTUwMiw2ICsxNTQ4LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25Q
b3BVcCwgSW50ZXJjZXB0aW9uQ2FuY2VsKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenps
ZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1B
dXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VN
ZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBA
c2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0
RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6Omdl
dFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRo
VVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlk
ZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVy
IHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRB
dXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50
ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsK
IAogICAgIFJldGFpblB0cjxOU1VSTD4gYmFzZVVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0
b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRl
c3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3
aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXMiXTsKQEAgLTE1MzUsNiArMTU4Miw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUG9wVXAsIElu
dGVyY2VwdGlvblN1Y2NlZWRDbG9zZUJ5SXRzZWxmKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIg
c3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBl
cmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5z
dGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFz
cygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJy
aWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQ
QUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRp
b25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihv
dmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3
aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rv
cihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhV
UkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gYmFzZVVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1
bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3Vi
ZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKICAgICBhdXRvIHRlc3RVUkwg
PSBVUkwoVVJMKCksICJodHRwOi8vd3d3LmV4YW1wbGUuY29tIik7CkBAIC0xNTcxLDYgKzE2MTks
NyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblBvcFVwLCBJbnRlcmNlcHRpb25TdWNjZWVkQ2xvc2VC
eVBhcmVudCkKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0
aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhV
Ukw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZv
cm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dp
enpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVn
YXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAg
SW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25D
bGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpo
dHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRp
b25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpn
ZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRz
V2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4o
b3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8
TlNVUkw+IGJhc2VVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAi
c2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRB
UEkucmVzb3VyY2VzIl07CiAgICAgYXV0byB0ZXN0VVJMID0gVVJMKFVSTCgpLCAiaHR0cDovL3d3
dy5leGFtcGxlLmNvbSIpOwpAQCAtMTYwNyw2ICsxNjU2LDcgQEAgVEVTVChTT0F1dGhvcml6YXRp
b25Qb3BVcCwgSW50ZXJjZXB0aW9uU3VjY2VlZENsb3NlQnlXZWJLaXQpCiAgICAgQ2xhc3NNZXRo
b2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2Vs
ZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWlu
dGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwp
KTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9y
aXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0
PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIg
c3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2lu
QXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRf
Y2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3Rh
bmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3Mo
KSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNv
bXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlv
bkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiBiYXNlVVJMID0gW1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZTIiIHdpdGhFeHRlbnNpb246
QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogICAgIGF1
dG8gdGVzdFVSTCA9IFVSTChVUkwoKSwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKTsKQEAgLTE2
NDMsNiArMTY5Myw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUG9wVXAsIEludGVyY2VwdGlvblN1
Y2NlZWRXaXRoT3RoZXJIdHRwU3RhdHVzQ29kZSkKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3
aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJm
b3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8
SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3Rh
bmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3Mo
KSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlk
ZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFM
OjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9u
V2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3Zl
cnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6
emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Io
Z2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCBy
ZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJM
KSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IGJhc2VVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAgICAgUmV0YWluUHRyPE5TVVJM
PiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBs
ZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl07CkBAIC0xNjgzLDYgKzE3MzQsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblBvcFVw
LCBJbnRlcmNlcHRpb25TdWNjZWVkV2l0aENvb2tpZSkKICAgICBDbGFzc01ldGhvZFN3aXp6bGVy
IHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5Q
ZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIElu
c3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xh
c3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVy
cmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMo
UEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0
aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4o
b3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RT
d2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0
b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjop
LCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRo
VVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IGJhc2VVUkwgPSBbW05TQnVuZGxlIG1haW5C
dW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1
YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAgICAgYXV0byB0ZXN0VVJM
ID0gVVJMKFVSTCgpLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpOwpAQCAtMTcxOSw2ICsxNzcx
LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwgSW50ZXJjZXB0aW9uU3VjY2VlZFR3aWNl
KQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0
aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNw
b25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhv
cml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIo
UEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCks
IEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5
OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhV
UkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0
aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJM
OnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlk
ZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4g
YmFzZVVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUy
IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNv
dXJjZXMiXTsKICAgICBhdXRvIHRlc3RVUkwgPSBVUkwoVVJMKCksICJodHRwOi8vd3d3LmV4YW1w
bGUuY29tIik7CkBAIC0xNzU5LDYgKzE4MTIsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblBvcFVw
LCBJbnRlcmNlcHRpb25TdWNjZWVkU3VwcHJlc3NBY3RpdmVTZXNzaW9uKQogICAgIEluc3RhbmNl
TWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwg
QHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNl
dERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpn
ZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0
aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxl
ciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2Fu
Y2VsQXV0aG9yaXphdGlvbiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhbmNlbEF1
dGhvcml6YXRpb24pKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNShQQUw6
OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGlu
dHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0
cjxOU1VSTD4gYmFzZVVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6
QCJzaW1wbGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktp
dEFQSS5yZXNvdXJjZXMiXTsKICAgICBhdXRvIHRlc3RVUkwgPSBVUkwoVVJMKCksICJodHRwOi8v
d3d3LmV4YW1wbGUuY29tIik7CkBAIC0xODIwLDYgKzE4NzQsNyBAQCBURVNUKFNPQXV0aG9yaXph
dGlvblBvcFVwLCBJbnRlcmNlcHRpb25TdWNjZWVkTmV3V2luZG93TmF2aWdhdGlvbikKICAgICBD
bGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNz
KCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2Rl
OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9u
V2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0
U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJw
cmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RT
d2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0
b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWlu
dGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7Cisg
ICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRp
b25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25z
ZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRo
b3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IGJhc2VVUkwg
PSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4
dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07
CiAgICAgYXV0byB0ZXN0VVJMID0gVVJMKFVSTCgpLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIp
OwpAQCAtMTg1Niw2ICsxOTExLDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwgQXV0aG9y
aXphdGlvbk9wdGlvbnMpCiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpn
ZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRp
b25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVD
YW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6
bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rvcihz
ZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkp
OwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3Jp
emF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhl
YWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRo
b3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0
KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRp
b25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgYXV0
byB0ZXN0VVJMID0gVVJMKFVSTCgpLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpOwogICAgIGF1
dG8gdGVzdEh0bWwgPSBnZW5lcmF0ZUh0bWwob3BlbmVyVGVtcGxhdGUsIHRlc3RVUkwuc3RyaW5n
KCkpOwpAQCAtMTg3OSw3ICsxOTM1LDggQEAgVEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwgQXV0
aG9yaXphdGlvbk9wdGlvbnMpCiBURVNUKFNPQXV0aG9yaXphdGlvblBvcFVwLCBTT0F1dGhvcml6
YXRpb25Mb2FkUG9saWN5SWdub3JlKQogewogICAgIHJlc2V0U3RhdGUoKTsKLSAgICBDbGFzc01l
dGhvZFN3aXp6bGVyIHN3aXp6bGVyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNl
bGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJM
KSk7CisgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6
YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJl
c3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0
aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVy
MihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0
aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIGF1
dG8gdGVzdFVSTCA9IFVSTChVUkwoKSwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKTsKICAgICBh
dXRvIHRlc3RIdG1sID0gZ2VuZXJhdGVIdG1sKG9wZW5lclRlbXBsYXRlLCB0ZXN0VVJMLnN0cmlu
ZygpKTsKQEAgLTE5MDcsNiArMTk2NCw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUG9wVXAsIFNP
QXV0aG9yaXphdGlvbkxvYWRQb2xpY3lBbGxvd0FzeW5jKQogICAgIENsYXNzTWV0aG9kU3dpenps
ZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNh
blBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRf
Y2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAg
SW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25D
bGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92
ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVy
MyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6
YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhv
ZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxl
Y3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9u
OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dp
dGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gYmFzZVVSTCA9IFtbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIg
c3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKICAgICBhdXRvIHRlc3RV
UkwgPSBVUkwoVVJMKCksICJodHRwOi8vd3d3LmV4YW1wbGUuY29tIik7CkBAIC0xOTQyLDcgKzIw
MDAsOCBAQCBURVNUKFNPQXV0aG9yaXphdGlvblBvcFVwLCBTT0F1dGhvcml6YXRpb25Mb2FkUG9s
aWN5QWxsb3dBc3luYykKIFRFU1QoU09BdXRob3JpemF0aW9uUG9wVXAsIFNPQXV0aG9yaXphdGlv
bkxvYWRQb2xpY3lJZ25vcmVBc3luYykKIHsKICAgICByZXNldFN0YXRlKCk7Ci0gICAgQ2xhc3NN
ZXRob2RTd2l6emxlciBzd2l6emxlcihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBz
ZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVS
TCkpOworICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3Jp
emF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpy
ZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1
dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxl
cjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXph
dGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9j
YXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBh
dXRvIHRlc3RVUkwgPSBVUkwoVVJMKCksICJodHRwOi8vd3d3LmV4YW1wbGUuY29tIik7CiAgICAg
YXV0byB0ZXN0SHRtbCA9IGdlbmVyYXRlSHRtbChvcGVuZXJUZW1wbGF0ZSwgdGVzdFVSTC5zdHJp
bmcoKSk7CkBAIC0xOTg2LDYgKzIwNDUsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblN1YkZyYW1l
LCBOb0ludGVyY2VwdGlvbnNOb25BcHBsZUZpcnN0UGFydHlNYWluRnJhbWUpCiAgICAgQ2xhc3NN
ZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBA
c2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCBy
ZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhV
UkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0
aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9j
YXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenps
ZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJl
Z2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnBy
ZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIElu
c3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI1KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xh
c3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2Rl
OmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXph
dGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgYXV0byB0ZXN0SHRtbCA9IGdlbmVyYXRlSHRtbChw
YXJlbnRUZW1wbGF0ZSwgVVJMKFVSTCgpLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpLnN0cmlu
ZygpKTsKIApAQCAtMjAwNyw2ICsyMDY3LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25TdWJGcmFt
ZSwgSW50ZXJjZXB0aW9uRXJyb3IpCiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxl
cjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0
YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNz
KCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBC
b2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldp
dGhVUkwpKTsKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChbQUtBdXRob3JpemF0
aW9uQ29udHJvbGxlciBjbGFzc10sIEBzZWxlY3Rvcihpc1VSTEZyb21BcHBsZU93bmVkRG9tYWlu
OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUlzVVJMRnJvbUFwcGxlT3duZWREb21h
aW4pKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNShQQUw6OmdldFNPQXV0
aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJM
OnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlk
ZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4g
YmFzZVVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUy
IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNv
dXJjZXMiXTsKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5C
dW5kbGVdIFVSTEZvclJlc291cmNlOkAiR2V0U2Vzc2lvbkNvb2tpZSIgd2l0aEV4dGVuc2lvbjpA
Imh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CkBAIC0yMDM4
LDYgKzIwOTksNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblN1YkZyYW1lLCBJbnRlcmNlcHRpb25T
dWNjZXNzKQogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09B
dXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0
X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6
emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Io
YmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVy
cHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAg
Q2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjQoW0FLQXV0aG9yaXphdGlvbkNvbnRyb2xsZXIg
Y2xhc3NdLCBAc2VsZWN0b3IoaXNVUkxGcm9tQXBwbGVPd25lZERvbWFpbjopLCByZWludGVycHJl
dF9jYXN0PElNUD4ob3ZlcnJpZGVJc1VSTEZyb21BcHBsZU93bmVkRG9tYWluKSk7CisgICAgSW5z
dGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjUoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFz
cygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6
Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0
aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBhdXRvIHRlc3RVUkwgPSBVUkwoVVJMKCksICJodHRw
Oi8vd3d3LmV4YW1wbGUuY29tIik7CiAgICAgYXV0byB0ZXN0SHRtbCA9IGdlbmVyYXRlSHRtbChw
YXJlbnRUZW1wbGF0ZSwgdGVzdFVSTC5zdHJpbmcoKSk7CkBAIC0yMDY1LDYgKzIxMjcsNyBAQCBU
RVNUKFNPQXV0aG9yaXphdGlvblN1YkZyYW1lLCBJbnRlcmNlcHRpb25TdWNjZWVkV2l0aE90aGVy
SHR0cFN0YXR1c0NvZGUpCiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFM
OjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1l
dGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBz
ZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5Oiks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwp
KTsKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChbQUtBdXRob3JpemF0aW9uQ29u
dHJvbGxlciBjbGFzc10sIEBzZWxlY3Rvcihpc1VSTEZyb21BcHBsZU93bmVkRG9tYWluOiksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUlzVVJMRnJvbUFwcGxlT3duZWREb21haW4pKTsK
KyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNShQQUw6OmdldFNPQXV0aG9yaXph
dGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3Bv
bnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1
dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gYmFzZVVS
TCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRo
RXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMi
XTsKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVd
IFVSTEZvclJlc291cmNlOkAiR2V0U2Vzc2lvbkNvb2tpZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwi
IHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CkBAIC0yMTAwLDYgKzIx
NjMsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblN1YkZyYW1lLCBJbnRlcmNlcHRpb25TdWNjZWVk
V2l0aENvb2tpZSkKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6Omdl
dFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVy
cHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9k
U3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVj
dG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOwog
ICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFtBS0F1dGhvcml6YXRpb25Db250cm9s
bGVyIGNsYXNzXSwgQHNlbGVjdG9yKGlzVVJMRnJvbUFwcGxlT3duZWREb21haW46KSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlSXNVUkxGcm9tQXBwbGVPd25lZERvbWFpbikpOworICAg
IEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI1KFBBTDo6Z2V0U09BdXRob3JpemF0aW9u
Q2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VD
b2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9y
aXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgYXV0byB0ZXN0VVJMID0gVVJMKFVSTCgpLCAi
aHR0cDovL3d3dy5leGFtcGxlLmNvbSIpOwogICAgIGF1dG8gdGVzdEh0bWwgPSBnZW5lcmF0ZUh0
bWwocGFyZW50VGVtcGxhdGUsIHRlc3RVUkwuc3RyaW5nKCkpOwpAQCAtMjEyNyw2ICsyMTkxLDcg
QEAgVEVTVChTT0F1dGhvcml6YXRpb25TdWJGcmFtZSwgSW50ZXJjZXB0aW9uU3VjY2Vzc1R3aWNl
KQogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3Jp
emF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8
SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBz
d2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5B
dXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9j
YXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgQ2xhc3NN
ZXRob2RTd2l6emxlciBzd2l6emxlcjQoW0FLQXV0aG9yaXphdGlvbkNvbnRyb2xsZXIgY2xhc3Nd
LCBAc2VsZWN0b3IoaXNVUkxGcm9tQXBwbGVPd25lZERvbWFpbjopLCByZWludGVycHJldF9jYXN0
PElNUD4ob3ZlcnJpZGVJc1VSTEZyb21BcHBsZU93bmVkRG9tYWluKSk7CisgICAgSW5zdGFuY2VN
ZXRob2RTd2l6emxlciBzd2l6emxlcjUoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBA
c2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxl
dGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGlu
dHNXaXRoVVJMKSk7CiAKICAgICBhdXRvIHRlc3RVUkwgPSBVUkwoVVJMKCksICJodHRwOi8vd3d3
LmV4YW1wbGUuY29tIik7CiAgICAgYXV0byB0ZXN0SHRtbCA9IGdlbmVyYXRlSHRtbChwYXJlbnRU
ZW1wbGF0ZSwgdGVzdFVSTC5zdHJpbmcoKSk7CkBAIC0yMTU5LDYgKzIyMjQsNyBAQCBURVNUKFNP
QXV0aG9yaXphdGlvblN1YkZyYW1lLCBBdXRob3JpemF0aW9uT3B0aW9ucykKICAgICBJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCks
IEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVT
ZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6
Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldp
dGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJy
aWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIENsYXNzTWV0aG9kU3dpenpsZXIg
c3dpenpsZXI0KFtBS0F1dGhvcml6YXRpb25Db250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKGlz
VVJMRnJvbUFwcGxlT3duZWREb21haW46KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRl
SXNVUkxGcm9tQXBwbGVPd25lZERvbWFpbikpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIg
c3dpenpsZXI1KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1
dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwog
CiAgICAgYXV0byB0ZXN0VVJMID0gVVJMKFVSTCgpLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIp
OwogICAgIGF1dG8gdGVzdEh0bWwgPSBnZW5lcmF0ZUh0bWwocGFyZW50VGVtcGxhdGUsIHRlc3RV
Ukwuc3RyaW5nKCkpOwpAQCAtMjE3Niw3ICsyMjQyLDggQEAgVEVTVChTT0F1dGhvcml6YXRpb25T
dWJGcmFtZSwgQXV0aG9yaXphdGlvbk9wdGlvbnMpCiBURVNUKFNPQXV0aG9yaXphdGlvblN1YkZy
YW1lLCBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5SWdub3JlKQogewogICAgIHJlc2V0U3RhdGUo
KTsKLSAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyKFBBTDo6Z2V0U09BdXRob3JpemF0
aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNw
b25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhv
cml6YXRpb25XaXRoVVJMKSk7CisgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFM
OjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6
YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3
aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rv
cihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhV
UkwpKTsKIAogICAgIGF1dG8gdGVzdFVSTCA9IFVSTChVUkwoKSwgImh0dHA6Ly93d3cuZXhhbXBs
ZS5jb20iKTsKICAgICBhdXRvIHRlc3RIdG1sID0gZ2VuZXJhdGVIdG1sKHBhcmVudFRlbXBsYXRl
LCB0ZXN0VVJMLnN0cmluZygpKTsKQEAgLTIyMDAsNiArMjI2Nyw3IEBAIFRFU1QoU09BdXRob3Jp
emF0aW9uU3ViRnJhbWUsIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3lBbGxvd0FzeW5jKQogICAg
IEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9u
Q2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihv
dmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxl
cjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3Jp
emF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElN
UD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgQ2xhc3NNZXRob2RT
d2l6emxlciBzd2l6emxlcjQoW0FLQXV0aG9yaXphdGlvbkNvbnRyb2xsZXIgY2xhc3NdLCBAc2Vs
ZWN0b3IoaXNVUkxGcm9tQXBwbGVPd25lZERvbWFpbjopLCByZWludGVycHJldF9jYXN0PElNUD4o
b3ZlcnJpZGVJc1VSTEZyb21BcHBsZU93bmVkRG9tYWluKSk7CisgICAgSW5zdGFuY2VNZXRob2RT
d2l6emxlciBzd2l6emxlcjUoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0
b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjop
LCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRo
VVJMKSk7CiAKICAgICBhdXRvIHRlc3RVUkwgPSBVUkwoVVJMKCksICJodHRwOi8vd3d3LmV4YW1w
bGUuY29tIik7CiAgICAgYXV0byB0ZXN0SHRtbCA9IGdlbmVyYXRlSHRtbChwYXJlbnRUZW1wbGF0
ZSwgdGVzdFVSTC5zdHJpbmcoKSk7CkBAIC0yMjI0LDcgKzIyOTIsOCBAQCBURVNUKFNPQXV0aG9y
aXphdGlvblN1YkZyYW1lLCBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5QWxsb3dBc3luYykKIFRF
U1QoU09BdXRob3JpemF0aW9uU3ViRnJhbWUsIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3lJZ25v
cmVBc3luYykKIHsKICAgICByZXNldFN0YXRlKCk7Ci0gICAgQ2xhc3NNZXRob2RTd2l6emxlciBz
d2l6emxlcihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJm
b3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8
SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIENsYXNz
TWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwg
QHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRo
VVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1
dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVS
TDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBhdXRvIHRlc3RVUkwgPSBV
UkwoVVJMKCksICJodHRwOi8vd3d3LmV4YW1wbGUuY29tIik7CiAgICAgYXV0byB0ZXN0SHRtbCA9
IGdlbmVyYXRlSHRtbChwYXJlbnRUZW1wbGF0ZSwgdGVzdFVSTC5zdHJpbmcoKSk7CkBAIC0yMjQ5
LDYgKzIzMTgsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblN1YkZyYW1lLCBJbnRlcmNlcHRpb25F
cnJvcldpdGhSZWZlcnJlcikKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQ
QUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCBy
ZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNl
TWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwg
QHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVS
TCkpOwogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFtBS0F1dGhvcml6YXRpb25D
b250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKGlzVVJMRnJvbUFwcGxlT3duZWREb21haW46KSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlSXNVUkxGcm9tQXBwbGVPd25lZERvbWFpbikp
OworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI1KFBBTDo6Z2V0U09BdXRob3Jp
emF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVz
cG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0
QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgVENQU2VydmVyIHNlcnZlcihbcGFy
ZW50SHRtbCA9IGdlbmVyYXRlSHRtbChwYXJlbnRUZW1wbGF0ZSwgInNpbXBsZS5odG1sIiksIGZy
YW1lSHRtbCA9IGdlbmVyYXRlSHRtbChpZnJhbWVUZW1wbGF0ZSwgInBhcmVudC5wb3N0TWVzc2Fn
ZSgnUmVmZXJyZXI6ICcgKyBkb2N1bWVudC5yZWZlcnJlciwgJyonKTsiKV0gKGludCBzb2NrZXQp
IHsKICAgICAgICAgTlNTdHJpbmcgKmZpcnN0UmVzcG9uc2UgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDoKQEAgLTIyOTQsNiArMjM2NCw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uU3ViRnJh
bWUsIEludGVyY2VwdGlvbkVycm9yTWVzc2FnZU9yZGVyKQogICAgIEluc3RhbmNlTWV0aG9kU3dp
enpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9y
KHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRl
KSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhv
cml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRw
SGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1
dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjQo
W0FLQXV0aG9yaXphdGlvbkNvbnRyb2xsZXIgY2xhc3NdLCBAc2VsZWN0b3IoaXNVUkxGcm9tQXBw
bGVPd25lZERvbWFpbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVJc1VSTEZyb21B
cHBsZU93bmVkRG9tYWluKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjUo
UEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlv
bkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0
PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRh
aW5QdHI8TlNVUkw+IGJhc2VVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291
cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RX
ZWJLaXRBUEkucmVzb3VyY2VzIl07CiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tO
U0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIkdldFNlc3Npb25Db29raWUiIHdp
dGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdOwpAQCAtMjMyMCw2ICsyMzkxLDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25TdWJGcmFtZSwg
SW50ZXJjZXB0aW9uU3VjY2Vzc01lc3NhZ2VPcmRlcikKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6
bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rvcihz
ZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkp
OwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3Jp
emF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhl
YWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRo
b3JpemF0aW9uV2l0aFVSTCkpOwogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFtB
S0F1dGhvcml6YXRpb25Db250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKGlzVVJMRnJvbUFwcGxl
T3duZWREb21haW46KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlSXNVUkxGcm9tQXBw
bGVPd25lZERvbWFpbikpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI1KFBB
TDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25I
aW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJ
TVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgYXV0byB0
ZXN0VVJMID0gVVJMKFVSTCgpLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpOwogICAgIGF1dG8g
dGVzdEh0bWwgPSBnZW5lcmF0ZUh0bWwocGFyZW50VGVtcGxhdGUsIHRlc3RVUkwuc3RyaW5nKCkp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389467</attachid>
            <date>2020-02-01 19:13:02 -0800</date>
            <delta_ts>2020-02-03 21:29:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207079-20200201191301.patch</filename>
            <type>text/plain</type>
            <size>76260</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1NDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCAwYjgxN2Ex
OGZiYWQxZjNmMTQ1ZTViMDQ2ZGVlYWQ5NTU2MWQzOWE5Li44NTBkODk1NThiMzI1YWFhZmY2YTk4
MGQwNDJhYjFlYjYyODA1ZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAyMC0wMS0zMSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAg
IFBhc3MgYSBoaW50IGZyb20gdGhlIGV4dGVuc2lvbiB0byBkZWNpZGVQb2xpY3lGb3JTT0F1dGhv
cml6YXRpb25Mb2FkV2l0aEN1cnJlbnRQb2xpY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzA3OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDgy
OTA0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBwYWwvY29jb2EvQXBwU1NPU29mdExpbmsuaDoKKyAgICAgICAgKiBwYWwvY29jb2EvQXBwU1NP
U29mdExpbmsubW06CisgICAgICAgICogcGFsL3NwaS9jb2NvYS9BcHBTU09TUEkuaDoKKyAgICAg
ICAgQWRkcyBtYWNyb3MgZm9yIGNsYXNzZXMgdGhhdCBhcmUgdXNlZCBpbiB0aGUgdGVzdHMuCisK
IDIwMjAtMDEtMzAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBBZGQgV0tOYXZpZ2F0aW9uRGVsZWdhdGUgU1BJIHRvIGRpc2FibGUgVExTIDEu
MCBhbmQgMS4xCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJiMTgyOTE5ODg2YWNmODc2YTU3NjI2ZTY5OGFmYmRlMGU3
OWU4ZGEuLmI4MDI1M2U1N2I2ZDA2MDA0NzhkYzFmNjU3ZDc3OTYyMTFjMTBkYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMjAtMDEtMzEgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFw
cGxlLmNvbT4KKworICAgICAgICBQYXNzIGEgaGludCBmcm9tIHRoZSBleHRlbnNpb24gdG8gZGVj
aWRlUG9saWN5Rm9yU09BdXRob3JpemF0aW9uTG9hZFdpdGhDdXJyZW50UG9saWN5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcwNzkKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQ4MjkwNDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFBhc3MgYSBsb2NhbGl6ZWQgaHVtYW4gcmVhZGFibGUgaGludCBm
cm9tIHRoZSBleHRlbnNpb24gdG8gZGVjaWRlUG9saWN5Rm9yU09BdXRob3JpemF0aW9uTG9hZFdp
dGhDdXJyZW50UG9saWN5LAorICAgICAgICBzdWNoIHRoYXQgY2xpZW50cyBjYW4gZGlzcGxheSBp
dCB0byB0ZWxsIHVzZXJzIHdoYXQgdGhlIGV4dGVuc2lvbiBpcyB0cnlpbmcgdG8gZG8uIEhpbnRz
IGNvdWxkIGJlIHNvbWV0aGluZworICAgICAgICBsaWtlICJTaWduIEluIFdpdGggQXBwbGUiLgor
CisgICAgICAgIENvdmVyZWQgbmV3IHRlc3QgY29udGVudHMgd2l0aGluIGV4aXN0aW5nIHRlc3Rz
LgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6
YXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlv
bi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpTT0F1dGhvcml6
YXRpb25TZXNzaW9uOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OlNPQXV0aG9yaXphdGlvblNl
c3Npb246OmNvbnRpbnVlU3RhcnRBZnRlckdldEF1dGhvcml6YXRpb25IaW50cyk6CisgICAgICAg
IChXZWJLaXQ6OlNPQXV0aG9yaXphdGlvblNlc3Npb246OmNvbnRpbnVlU3RhcnRBZnRlckRlY2lk
ZVBvbGljeSk6CisKIDIwMjAtMDEtMzAgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgbG9nZ2luZyB0byBzaG93IHRoZSBmbG93IG9mIEFwcFNTTwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9BcHBTU09Tb2Z0TGluay5oIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9BcHBTU09Tb2Z0TGluay5oCmluZGV4IGY3NmM1
NjU5YjlhYWU4MGJlMTNmMmFjOWUyMmI2MTRiNzUyZDkxODAuLjIwOTAwZjljMTljZWU1ODlmNzVj
YTBjZWE0Yjc3ZTRhNzJkNTE3YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Y29jb2EvQXBwU1NPU29mdExpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29h
L0FwcFNTT1NvZnRMaW5rLmgKQEAgLTM0LDEwICszNCwxNiBAQCBTT0ZUX0xJTktfRlJBTUVXT1JL
X0ZPUl9IRUFERVIoUEFMLCBBcHBTU08pOwogCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQ
QUwsIFNPQXV0aG9yaXphdGlvbik7CiAKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwg
U09BdXRob3JpemF0aW9uSGludHMpOworCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQ
QUwsIEFwcFNTTywgU09BdXRob3JpemF0aW9uT3B0aW9uVXNlckFjdGlvbkluaXRpYXRlZCwgTlNT
dHJpbmcqKTsKICNkZWZpbmUgU09BdXRob3JpemF0aW9uT3B0aW9uVXNlckFjdGlvbkluaXRpYXRl
ZCBQQUw6OmdldF9BcHBTU09fU09BdXRob3JpemF0aW9uT3B0aW9uVXNlckFjdGlvbkluaXRpYXRl
ZCgpCiAKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQXBwU1NPLCBTT0Vycm9y
RG9tYWluLCBOU0Vycm9yRG9tYWluKTsKICNkZWZpbmUgU09FcnJvckRvbWFpbiBQQUw6OmdldF9B
cHBTU09fU09FcnJvckRvbWFpbigpCiAKK1NPRlRfTElOS19GUkFNRVdPUktfRk9SX0hFQURFUihQ
QUwsIEFwcFNTT0NvcmUpOworCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFNPQXV0
aG9yaXphdGlvbkhpbnRzQ29yZSk7CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9jb2NvYS9BcHBTU09Tb2Z0TGluay5tbSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvY29jb2EvQXBwU1NPU29mdExpbmsubW0KaW5kZXggOGEwYzU1N2QzOGU4ZmNiZmEwMGUwMzgw
MjE3MDJhNTNkMTVlMzlhYy4uZmU5NTI1MzE0MTYyNGZlY2VhNDU1ZGVhNWIzZWM3YmQ4YjAyNjUz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9BcHBTU09Tb2Z0TGlu
ay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL0FwcFNTT1NvZnRMaW5rLm1t
CkBAIC0zNyw4ICszNywxNCBAQCBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9X
SVRIX0VYUE9SVChQQUwsIEFwcFNTTywgU09BdXRob3JpemF0aW9uLCBQQQogU09GVF9MSU5LX0NM
QVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBcHBTU08sIFNPQXV0aG9yaXphdGlvbiwg
UEFMX0VYUE9SVCk7CiAjZW5kaWYKIAorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9F
WFBPUlQoUEFMLCBBcHBTU08sIFNPQXV0aG9yaXphdGlvbkhpbnRzLCBQQUxfRVhQT1JUKTsKKwog
U09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBcHBTU08sIFNP
QXV0aG9yaXphdGlvbk9wdGlvblVzZXJBY3Rpb25Jbml0aWF0ZWQsIE5TU3RyaW5nKiwgUEFMX0VY
UE9SVCk7CiAKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwg
QXBwU1NPLCBTT0Vycm9yRG9tYWluLCBOU0Vycm9yRG9tYWluLCBQQUxfRVhQT1JUKTsKIAorU09G
VF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBcHBT
U09Db3JlLCBQQUxfRVhQT1JUKTsKKworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9F
WFBPUlQoUEFMLCBBcHBTU09Db3JlLCBTT0F1dGhvcml6YXRpb25IaW50c0NvcmUsIFBBTF9FWFBP
UlQpOworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2Nv
Y29hL0FwcFNTT1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQXBwU1NP
U1BJLmgKaW5kZXggZjNjMjQ5NzE3MTMyYWY1ZTY5NmVkNjEzNDRlNmIyODkyMTZjOWQxMi4uYjA0
YmYyYWQ2MzUzNDVmZjg0YjQ5ODFlMzVhM2IyY2UwNmQzODRiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQXBwU1NPU1BJLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvY29jb2EvQXBwU1NPU1BJLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpZiBV
U0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCiAjaW1wb3J0IDxBcHBTU08vQXBwU1NPLmg+CisjaW1w
b3J0IDxBcHBTU09Db3JlL0FwcFNTT0NvcmUuaD4KIAogI2Vsc2UKIApAQCAtNzQsMTEgKzc1LDI4
IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFNPQXV0aG9yaXphdGlvbkluaXRpYXRpbmdB
Y3Rpb24pIHsKICAgICBTT0F1dGhvcml6YXRpb25Jbml0aWF0aW5nQWN0aW9uU3ViZnJhbWUsCiB9
OwogCitAaW50ZXJmYWNlIFNPQXV0aG9yaXphdGlvbkhpbnRzQ29yZSA6IE5TT2JqZWN0IDxOU1Nl
Y3VyZUNvZGluZz4KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTG9jYWxpemVkRXh0ZW5zaW9u
QnVuZGxlRGlzcGxheU5hbWU6KE5TU3RyaW5nICopbG9jYWxpemVkRXh0ZW5zaW9uQnVuZGxlRGlz
cGxheU5hbWU7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKmxv
Y2FsaXplZEV4dGVuc2lvbkJ1bmRsZURpc3BsYXlOYW1lOworCitAZW5kCisKK0BpbnRlcmZhY2Ug
U09BdXRob3JpemF0aW9uSGludHMgOiBOU09iamVjdAorCistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhBdXRob3JpemF0aW9uSGludHNDb3JlOihTT0F1dGhvcml6YXRpb25IaW50c0NvcmUgKilhdXRo
b3JpemF0aW9uSGludHNDb3JlOworCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5T
U3RyaW5nICpsb2NhbGl6ZWRFeHRlbnNpb25CdW5kbGVEaXNwbGF5TmFtZTsKKworQGVuZAorCiBA
aW50ZXJmYWNlIFNPQXV0aG9yaXphdGlvbiA6IE5TT2JqZWN0CiBAcHJvcGVydHkgKHdlYWspIGlk
PFNPQXV0aG9yaXphdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZTsKIEBwcm9wZXJ0eSAocmV0YWluLCBu
dWxsYWJsZSkgZGlzcGF0Y2hfcXVldWVfdCBkZWxlZ2F0ZURpc3BhdGNoUXVldWU7CiBAcHJvcGVy
dHkgKGNvcHksIG5vbmF0b21pYykgTlNEaWN0aW9uYXJ5ICphdXRob3JpemF0aW9uT3B0aW9uczsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGVuYWJsZUVtYmVkZGVkQXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyOworLSAodm9pZClnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOihOU1VS
TCAqKXVybCByZXNwb25zZUNvZGU6KE5TSW50ZWdlcilyZXNwb25zZUNvZGUgY29tcGxldGlvbjoo
dm9pZCAoXikoU09BdXRob3JpemF0aW9uSGludHMgKiBfTnVsbGFibGUgYXV0aG9yaXphdGlvbkhp
bnRzLCBOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSljb21wbGV0aW9uOwogKyAoQk9PTCljYW5Q
ZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6KE5TVVJMICopdXJsIHJlc3BvbnNlQ29kZTooTlNJ
bnRlZ2VyKXJlc3BvbnNlQ29kZTsKICsgKEJPT0wpY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRo
VVJMOihOU1VSTCAqKXVybCByZXNwb25zZUNvZGU6KE5TSW50ZWdlcilyZXNwb25zZUNvZGUgdXNl
SW50ZXJuYWxFeHRlbnNpb25zOihCT09MKXVzZUludGVybmFsRXh0ZW5zaW9uczsKIC0gKHZvaWQp
YmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDooTlNVUkwgKil1cmwgaHR0cEhlYWRlcnM6KE5TRGlj
dGlvbmFyeSA8TlNTdHJpbmcgKiwgTlNTdHJpbmcgKj4gKilodHRwSGVhZGVycyBodHRwQm9keToo
TlNEYXRhICopaHR0cEJvZHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1NPQXV0aG9yaXphdGlvblNlc3Np
b24uaAppbmRleCAyYTYyMGM1MTkzMmJkZmZiMzQ5ZmRlMjcxMWIxNTVlYzEzMmI0ZTQ5Li4yM2Uy
NzA3NWZmNjM1ZTFkYjFmYTI0YWJjMDdjOTExNDBiMmU4MzBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vz
c2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlv
bi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLmgKQEAgLTQ4LDYgKzQ4LDggQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAorZW51bSBjbGFzcyBTT0F1dGhvcml6YXRp
b25Mb2FkUG9saWN5IDogdWludDhfdDsKKwogLy8gQSBzZXNzaW9uIHdpbGwgb25seSBiZSBleGVj
dXRlZCBvbmNlLgogY2xhc3MgU09BdXRob3JpemF0aW9uU2Vzc2lvbiA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFNPQXV0aG9yaXphdGlvblNlc3Npb24+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U09BdXRo
b3JpemF0aW9uU2Vzc2lvbj4gewogcHVibGljOgpAQCAtMTAyLDYgKzEwNCw4IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGJlY29tZUNvbXBsZXRlZCgpOwogICAgIHZvaWQgZGlzbWlzc1ZpZXdDb250
cm9sbGVyKCk7CisgICAgdm9pZCBjb250aW51ZVN0YXJ0QWZ0ZXJHZXRBdXRob3JpemF0aW9uSGlu
dHMoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBjb250aW51ZVN0YXJ0QWZ0ZXJEZWNpZGVQb2xp
Y3koY29uc3QgU09BdXRob3JpemF0aW9uTG9hZFBvbGljeSYpOwogCiAgICAgU3RhdGUgbV9zdGF0
ZSAgeyBTdGF0ZTo6SWRsZSB9OwogICAgIFdlYWtPYmpDUHRyPFNPQXV0aG9yaXphdGlvbiAqPiBt
X3NvQXV0aG9yaXphdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1NPQXV0aG9yaXphdGlvblNlc3Np
b24ubW0KaW5kZXggYzk1YzMzNjBmYWZhNjU0MWQ5ZjViOThjMjk4ZGY1MzZmZTAxNzZmZi4uYzM3
MzRiZWQzZmI3ODM1OTA5OTI3MzdiYmUxNWUxN2Q4MzA3YmMzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1NPQXV0aG9yaXphdGlvblNl
c3Npb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0
aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KQEAgLTQxLDYgKzQxLDcgQEAKICNpbXBvcnQg
PFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbi5oPgogI2ltcG9ydCA8cGFsL2NvY29hL0FwcFNTT1NvZnRMaW5rLmg+CisjaW1wb3J0IDx3
dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KIAogI2RlZmluZSBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihtX3BhZ2UgJiYgbV9wYWdl
LT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgQXBwU1NPLCAiJXAgLSBbSW5pdGlhdGluZ0Fj
dGlvbj0lc10gU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6IiBmbXQsIHRoaXMsIHRvU3RyaW5nKG1f
YWN0aW9uKSwgIyNfX1ZBX0FSR1NfXykKQEAgLTEyOCw0NiArMTI5LDY2IEBAIHZvaWQgU09BdXRo
b3JpemF0aW9uU2Vzc2lvbjo6c3RhcnQoKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
InN0YXJ0OiIpOwogCi0gICAgQVNTRVJUKChtX3N0YXRlID09IFN0YXRlOjpJZGxlIHx8IG1fc3Rh
dGUgPT0gU3RhdGU6OldhaXRpbmcpICYmIG1fcGFnZSAmJiBtX25hdmlnYXRpb25BY3Rpb24pOwor
ICAgIEFTU0VSVCgobV9zdGF0ZSA9PSBTdGF0ZTo6SWRsZSB8fCBtX3N0YXRlID09IFN0YXRlOjpX
YWl0aW5nKSAmJiBtX25hdmlnYXRpb25BY3Rpb24pOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6QWN0
aXZlOworICAgIFttX3NvQXV0aG9yaXphdGlvbiBnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJM
Om1fbmF2aWdhdGlvbkFjdGlvbi0+cmVxdWVzdCgpLnVybCgpIHJlc3BvbnNlQ29kZTowIGNvbXBs
ZXRpb246bWFrZUJsb2NrUHRyKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0g
KFNPQXV0aG9yaXphdGlvbkhpbnRzICphdXRob3JpemF0aW9uSGludHMsIE5TRXJyb3IgKmVycm9y
KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0OiBSZWNlaXZlIFNPQXV0
aG9yaXphdGlvbkhpbnRzIChlcnJvcj0lbGQpIiwgZXJyb3IgPyBlcnJvci5jb2RlIDogMCk7CiAK
LSAgICBtX3BhZ2UtPmRlY2lkZVBvbGljeUZvclNPQXV0aG9yaXphdGlvbkxvYWQoZW1wdHlTdHJp
bmcoKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoU09BdXRob3JpemF0
aW9uTG9hZFBvbGljeSBwb2xpY3kpIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAg
aWYgKCF3ZWFrVGhpcyB8fCBlcnJvciB8fCAhYXV0aG9yaXphdGlvbkhpbnRzKQogICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBjb250aW51ZVN0YXJ0QWZ0ZXJHZXRBdXRob3JpemF0aW9uSGlu
dHMoYXV0aG9yaXphdGlvbkhpbnRzLmxvY2FsaXplZEV4dGVuc2lvbkJ1bmRsZURpc3BsYXlOYW1l
KTsKKyAgICB9KS5nZXQoKV07Cit9CiAKLSAgICAgICAgaWYgKHBvbGljeSA9PSBTT0F1dGhvcml6
YXRpb25Mb2FkUG9saWN5OjpJZ25vcmUpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoInN0YXJ0OiBSZWNlaXZlIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3k6Oklnbm9yZSIp
Owordm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpjb250aW51ZVN0YXJ0QWZ0ZXJHZXRBdXRo
b3JpemF0aW9uSGludHMoY29uc3QgU3RyaW5nJiBoaW50cykKK3sKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJjb250aW51ZVN0YXJ0QWZ0ZXJHZXRBdXRob3JpemF0aW9uSGludHM6IChoaW50
cz0lcykiLCBoaW50cy51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICAgICAgZmFsbEJhY2tUb1dl
YlBhdGgoKTsKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWN0aXZlKTsKKyAgICBpZiAo
IW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wYWdlLT5kZWNpZGVQb2xpY3lGb3JT
T0F1dGhvcml6YXRpb25Mb2FkKGhpbnRzLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyldIChTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5IHBvbGljeSkgeworICAgICAgICBpZiAo
IXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGNvbnRp
bnVlU3RhcnRBZnRlckRlY2lkZVBvbGljeShwb2xpY3kpOworICAgIH0pOworfQogCi0gICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0OiBSZWNlaXZlIFNPQXV0aG9yaXphdGlvbkxv
YWRQb2xpY3k6OkFsbG93Iik7Cit2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OmNvbnRpbnVl
U3RhcnRBZnRlckRlY2lkZVBvbGljeShjb25zdCBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5JiBw
b2xpY3kpCit7CisgICAgaWYgKHBvbGljeSA9PSBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5OjpJ
Z25vcmUpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29udGludWVTdGFydEFm
dGVyRGVjaWRlUG9saWN5OiBSZWNlaXZlIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3k6Oklnbm9y
ZSIpOwogCi0gICAgICAgIGlmICghbV9zb0F1dGhvcml6YXRpb24gfHwgIW1fcGFnZSB8fCAhbV9u
YXZpZ2F0aW9uQWN0aW9uKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBmYWxsQmFja1Rv
V2ViUGF0aCgpOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgICAgIC8vIEZJWE1FOiA8
cmRhcjovL3Byb2JsZW0vNDg5MDkzMzY+IFJlcGxhY2UgdGhlIGJlbG93IHdpdGggQXBwU1NPIGNv
bnN0YW50cy4KLSAgICAgICAgYXV0byBpbml0aWF0b3JPcmlnaW4gPSBlbXB0eVN0cmluZygpOwot
ICAgICAgICBpZiAobV9uYXZpZ2F0aW9uQWN0aW9uLT5zb3VyY2VGcmFtZSgpKQotICAgICAgICAg
ICAgaW5pdGlhdG9yT3JpZ2luID0gbV9uYXZpZ2F0aW9uQWN0aW9uLT5zb3VyY2VGcmFtZSgpLT5z
ZWN1cml0eU9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKTsKLSAgICAgICAgaWYg
KG1fYWN0aW9uID09IEluaXRpYXRpbmdBY3Rpb246OlN1YkZyYW1lICYmIG1fcGFnZS0+bWFpbkZy
YW1lKCkpCi0gICAgICAgICAgICBpbml0aWF0b3JPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKG1fcGFnZS0+bWFpbkZyYW1lKCktPnVybCgpKS0+dG9TdHJpbmcoKTsKLSAg
ICAgICAgTlNEaWN0aW9uYXJ5ICphdXRob3JpemF0aW9uT3B0aW9ucyA9IEB7Ci0gICAgICAgICAg
ICBTT0F1dGhvcml6YXRpb25PcHRpb25Vc2VyQWN0aW9uSW5pdGlhdGVkOiBAKG1fbmF2aWdhdGlv
bkFjdGlvbi0+aXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKSksCi0gICAgICAgICAgICBAImluaXRp
YXRvck9yaWdpbiI6IChOU1N0cmluZyAqKWluaXRpYXRvck9yaWdpbiwKLSAgICAgICAgICAgIEAi
aW5pdGlhdGluZ0FjdGlvbiI6IEAoc3RhdGljX2Nhc3Q8TlNJbnRlZ2VyPihtX2FjdGlvbikpCi0g
ICAgICAgIH07Ci0gICAgICAgIFttX3NvQXV0aG9yaXphdGlvbiBzZXRBdXRob3JpemF0aW9uT3B0
aW9uczphdXRob3JpemF0aW9uT3B0aW9uc107CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
Y29udGludWVTdGFydEFmdGVyRGVjaWRlUG9saWN5OiBSZWNlaXZlIFNPQXV0aG9yaXphdGlvbkxv
YWRQb2xpY3k6OkFsbG93Iik7CisKKyAgICBpZiAoIW1fc29BdXRob3JpemF0aW9uIHx8ICFtX3Bh
Z2UgfHwgIW1fbmF2aWdhdGlvbkFjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklY
TUU6IDxyZGFyOi8vcHJvYmxlbS80ODkwOTMzNj4gUmVwbGFjZSB0aGUgYmVsb3cgd2l0aCBBcHBT
U08gY29uc3RhbnRzLgorICAgIGF1dG8gaW5pdGlhdG9yT3JpZ2luID0gZW1wdHlTdHJpbmcoKTsK
KyAgICBpZiAobV9uYXZpZ2F0aW9uQWN0aW9uLT5zb3VyY2VGcmFtZSgpKQorICAgICAgICBpbml0
aWF0b3JPcmlnaW4gPSBtX25hdmlnYXRpb25BY3Rpb24tPnNvdXJjZUZyYW1lKCktPnNlY3VyaXR5
T3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpOworICAgIGlmIChtX2FjdGlvbiA9
PSBJbml0aWF0aW5nQWN0aW9uOjpTdWJGcmFtZSAmJiBtX3BhZ2UtPm1haW5GcmFtZSgpKQorICAg
ICAgICBpbml0aWF0b3JPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1f
cGFnZS0+bWFpbkZyYW1lKCktPnVybCgpKS0+dG9TdHJpbmcoKTsKKyAgICBOU0RpY3Rpb25hcnkg
KmF1dGhvcml6YXRpb25PcHRpb25zID0gQHsKKyAgICAgICAgU09BdXRob3JpemF0aW9uT3B0aW9u
VXNlckFjdGlvbkluaXRpYXRlZDogQChtX25hdmlnYXRpb25BY3Rpb24tPmlzUHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlKCkpLAorICAgICAgICBAImluaXRpYXRvck9yaWdpbiI6IChOU1N0cmluZyAqKWlu
aXRpYXRvck9yaWdpbiwKKyAgICAgICAgQCJpbml0aWF0aW5nQWN0aW9uIjogQChzdGF0aWNfY2Fz
dDxOU0ludGVnZXI+KG1fYWN0aW9uKSkKKyAgICB9OworICAgIFttX3NvQXV0aG9yaXphdGlvbiBz
ZXRBdXRob3JpemF0aW9uT3B0aW9uczphdXRob3JpemF0aW9uT3B0aW9uc107CiAKICNpZiBQTEFU
Rk9STShJT1MpCi0gICAgICAgIGlmICghW2Zyb21XZWJQYWdlUHJveHkoKm1fcGFnZSkuVUlEZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9wcmVzZW50aW5nVmlld0NvbnRyb2xs
ZXJGb3JXZWJWaWV3OildKQotICAgICAgICAgICAgW21fc29BdXRob3JpemF0aW9uIHNldEVuYWJs
ZUVtYmVkZGVkQXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOk5PXTsKKyAgICBpZiAoIVtmcm9t
V2ViUGFnZVByb3h5KCptX3BhZ2UpLlVJRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihfcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyRm9yV2ViVmlldzopXSkKKyAgICAgICAgW21f
c29BdXRob3JpemF0aW9uIHNldEVuYWJsZUVtYmVkZGVkQXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyOk5PXTsKICNlbmRpZgogCi0gICAgICAgIGF1dG8gKm5zUmVxdWVzdCA9IG1fbmF2aWdhdGlv
bkFjdGlvbi0+cmVxdWVzdCgpLm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBv
bGljeTo6VXBkYXRlSFRUUEJvZHkpOwotICAgICAgICBbbV9zb0F1dGhvcml6YXRpb24gYmVnaW5B
dXRob3JpemF0aW9uV2l0aFVSTDpuc1JlcXVlc3QuVVJMIGh0dHBIZWFkZXJzOm5zUmVxdWVzdC5h
bGxIVFRQSGVhZGVyRmllbGRzIGh0dHBCb2R5Om5zUmVxdWVzdC5IVFRQQm9keV07Ci0gICAgfSk7
CisgICAgYXV0byAqbnNSZXF1ZXN0ID0gbV9uYXZpZ2F0aW9uQWN0aW9uLT5yZXF1ZXN0KCkubnNV
UkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpVcGRhdGVIVFRQQm9keSk7
CisgICAgW21fc29BdXRob3JpemF0aW9uIGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6bnNSZXF1
ZXN0LlVSTCBodHRwSGVhZGVyczpuc1JlcXVlc3QuYWxsSFRUUEhlYWRlckZpZWxkcyBodHRwQm9k
eTpuc1JlcXVlc3QuSFRUUEJvZHldOwogfQogCiB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246
OmZhbGxCYWNrVG9XZWJQYXRoKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCBlODE4MWE4OGUxZmZiODRlMzFiYTFlNDdhOWNmYzRiMzc2OTA2NDcz
Li42NDE3Nzc5YmU2NWFlOGM1OTQ2MDdjODc5MmU1NDYzYTA1MjA3MzE1IDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MjAtMDEtMzEgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBQ
YXNzIGEgaGludCBmcm9tIHRoZSBleHRlbnNpb24gdG8gZGVjaWRlUG9saWN5Rm9yU09BdXRob3Jp
emF0aW9uTG9hZFdpdGhDdXJyZW50UG9saWN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcwNzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4Mjkw
NDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXN0U09BdXRob3JpemF0aW9uLm1tOgor
ICAgICAgICAoLVtUZXN0U09BdXRob3JpemF0aW9uRGVsZWdhdGUgX3dlYlZpZXc6ZGVjaWRlUG9s
aWN5Rm9yU09BdXRob3JpemF0aW9uTG9hZFdpdGhDdXJyZW50UG9saWN5OmZvckV4dGVuc2lvbjpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhp
bnRzV2l0aFVSTCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMC0wMS0z
MCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIGFub3RoZXIgc3BlY3VsYXRpdmUgdGVzdCBmaXggYWZ0ZXIgcjI1NTA0MQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXN0U09BdXRob3JpemF0
aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXN0U09BdXRo
b3JpemF0aW9uLm1tCmluZGV4IDdlMGEyYzJkZWJmNzA4MzZkMDU4OTg4NDliYWUyN2MyYTQ3MTI5
NmMuLjk3MzBhYzU4ZmE2ZTg4M2I4YThhNzFjNTM1YTFlMTFiOGQ4ZDFlMmYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGVzdFNPQXV0aG9yaXphdGlv
bi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Rlc3RTT0F1
dGhvcml6YXRpb24ubW0KQEAgLTE5Miw3ICsxOTIsNyBAQCAtIChXS1dlYlZpZXcgKil3ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNyZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJhdGlvbjooV0tX
ZQogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JT
T0F1dGhvcml6YXRpb25Mb2FkV2l0aEN1cnJlbnRQb2xpY3k6KF9XS1NPQXV0aG9yaXphdGlvbkxv
YWRQb2xpY3kpcG9saWN5IGZvckV4dGVuc2lvbjooTlNTdHJpbmcgKilleHRlbnNpb24gY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1NPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3kgcG9saWN5
KSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIEVYUEVDVF9FUShwb2xpY3ksIF9XS1NPQXV0aG9y
aXphdGlvbkxvYWRQb2xpY3lBbGxvdyk7Ci0gICAgRVhQRUNUX1RSVUUoW2V4dGVuc2lvbiBpc0Vx
dWFsOkAiIl0pOworICAgIEVYUEVDVF9UUlVFKFtleHRlbnNpb24gaXNFcXVhbDpAIlRlc3QiXSk7
CiAgICAgaWYgKCFzZWxmLmlzQXN5bmNFeGVjdXRpb24pIHsKICAgICAgICAgaWYgKHNlbGYuYWxs
b3dTT0F1dGhvcml6YXRpb25Mb2FkKQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocG9s
aWN5KTsKQEAgLTMwMCw2ICszMDAsMTUgQEAgc3RhdGljIHZvaWQgb3ZlcnJpZGVDYW5jZWxBdXRo
b3JpemF0aW9uKGlkLCBTRUwpCiAgICAgYXV0aG9yaXphdGlvbkNhbmNlbGxlZCA9IHRydWU7CiB9
CiAKK3VzaW5nIEdldEF1dGhvcml6YXRpb25IaW50c0NhbGxiYWNrID0gdm9pZCAoXikoU09BdXRo
b3JpemF0aW9uSGludHMgKmF1dGhvcml6YXRpb25IaW50cywgTlNFcnJvciAqZXJyb3IpOworc3Rh
dGljIHZvaWQgb3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKGlkLCBTRUwsIE5T
VVJMICp1cmwsIE5TSW50ZWdlciByZXNwb25zZUNvZGUsIEdldEF1dGhvcml6YXRpb25IaW50c0Nh
bGxiYWNrIGNvbXBsZXRpb24pCit7CisgICAgRVhQRUNUX0VRKHJlc3BvbnNlQ29kZSwgMGwpOwor
ICAgIGF1dG8gc29BdXRob3JpemF0aW9uSGludHNDb3JlID0gYWRvcHROUyhbUEFMOjphbGxvY1NP
QXV0aG9yaXphdGlvbkhpbnRzQ29yZUluc3RhbmNlKCkgaW5pdFdpdGhMb2NhbGl6ZWRFeHRlbnNp
b25CdW5kbGVEaXNwbGF5TmFtZTpAIlRlc3QiXSk7CisgICAgYXV0byBzb0F1dGhvcml6YXRpb25I
aW50cyA9IGFkb3B0TlMoW1BBTDo6YWxsb2NTT0F1dGhvcml6YXRpb25IaW50c0luc3RhbmNlKCkg
aW5pdFdpdGhBdXRob3JpemF0aW9uSGludHNDb3JlOnNvQXV0aG9yaXphdGlvbkhpbnRzQ29yZS5n
ZXQoKV0pOworICAgIGNvbXBsZXRpb24oc29BdXRob3JpemF0aW9uSGludHMuZ2V0KCksIG51bGxw
dHIpOworfQorCiAjaWYgUExBVEZPUk0oTUFDKQogdXNpbmcgTm90aWZpY2F0aW9uQ2FsbGJhY2sg
PSB2b2lkICheKShOU05vdGlmaWNhdGlvbiAqbm90ZSk7CiBzdGF0aWMgaWQgb3ZlcnJpZGVBZGRP
YnNlcnZlckZvck5hbWUoaWQsIFNFTCwgTlNOb3RpZmljYXRpb25OYW1lIG5hbWUsIGlkLCBOU09w
ZXJhdGlvblF1ZXVlICosIE5vdGlmaWNhdGlvbkNhbGxiYWNrIGJsb2NrKQpAQCAtMzg2LDcgKzM5
NSw4IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIE5vSW50ZXJjZXB0aW9ucykKIFRF
U1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvbkVycm9yKQogewogICAgIHJl
c2V0U3RhdGUoKTsKLSAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyKFBBTDo6Z2V0U09B
dXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0
aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVy
Zm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6
emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9y
bUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElN
UD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCks
IEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21w
bGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25I
aW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJo
dG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC00MDYs
NiArNDE2LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uRG9O
b3RIYW5kbGUpCiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1
dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRo
VVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJm
b3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3
aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxl
Z2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAg
IEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9u
Q2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6
aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0
aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6
Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50
c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRy
PE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpA
InNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRB
UEkucmVzb3VyY2VzIl07CiAKQEAgLTQyOSw2ICs0NDAsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlv
blJlZGlyZWN0LCBJbnRlcmNlcHRpb25DYW5jZWwpCiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBz
d2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVy
Zm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0
PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0
YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNz
KCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBB
TDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlv
bldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92
ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dp
enpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9y
KGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVS
TCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTQ1Miw2ICs0NjQsNyBA
QCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25Db21wbGV0ZVdpdGhv
dXREYXRhKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRo
b3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVS
TDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9y
bUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6
emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdh
dGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJ
bnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNs
YXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0
dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlv
bldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6Omdl
dFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNX
aXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihv
dmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxO
U1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJz
aW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdOwogCkBAIC00NzUsNiArNDg4LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25S
ZWRpcmVjdCwgSW50ZXJjZXB0aW9uVW5leHBlY3RlZENvbXBsZXRpb24pCiAgICAgQ2xhc3NNZXRo
b2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2Vs
ZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWlu
dGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwp
KTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9y
aXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0
PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIg
c3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2lu
QXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRf
Y2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3Rh
bmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3Mo
KSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNv
bXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlv
bkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpA
Imh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTQ5
OSw2ICs1MTMsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25T
dWNjZWVkMSkKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0
aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhV
Ukw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZv
cm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dp
enpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVn
YXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAg
SW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25D
bGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpo
dHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRp
b25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpn
ZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRz
V2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4o
b3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8
TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAi
c2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQ
SS5yZXNvdXJjZXMiXTsKIApAQCAtNTMzLDYgKzU0OCw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9u
UmVkaXJlY3QsIEludGVyY2VwdGlvblN1Y2NlZWQyKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIg
c3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBl
cmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5z
dGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFz
cygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJy
aWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQ
QUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRp
b25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihv
dmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3
aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rv
cihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhV
UkwpKTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CiAgICAgYXV0byBk
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0U09BdXRob3JpemF0aW9uQmFzaWNEZWxlZ2F0ZSBhbGxv
Y10gaW5pdF0pOwpAQCAtNTY3LDYgKzU4Myw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJl
Y3QsIEludGVyY2VwdGlvblN1Y2NlZWQzKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenps
ZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1B
dXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VN
ZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBA
c2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0
RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6Omdl
dFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRo
VVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlk
ZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVy
IHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRB
dXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50
ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsK
IAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CiAgICAgYXV0byBkZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tUZXN0U09BdXRob3JpemF0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsK
QEAgLTYwMiw2ICs2MTksNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNl
cHRpb25TdWNjZWVkNCkKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6Omdl
dFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlv
bldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNh
blBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenps
ZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNl
dERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7
CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6
YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVh
ZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhv
cml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQo
UEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlv
bkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0
PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRh
aW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291
cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdl
YktpdEFQSS5yZXNvdXJjZXMiXTsKIApAQCAtNjMyLDYgKzY1MCw3IEBAIFRFU1QoU09BdXRob3Jp
emF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvblN1Y2NlZWRXaXRoT3RoZXJIdHRwU3RhdHVzQ29k
ZSkKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXph
dGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVz
cG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRo
b3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIy
KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFu
Y2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygp
LCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9k
eTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRo
VVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1
dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVS
TDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+
IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxl
IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNv
dXJjZXMiXTsKIApAQCAtNjU2LDYgKzY3NSw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJl
Y3QsIEludGVyY2VwdGlvblN1Y2NlZWRXaXRoQ29va2llKQogICAgIENsYXNzTWV0aG9kU3dpenps
ZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNh
blBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRf
Y2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAg
SW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25D
bGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92
ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVy
MyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6
YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhv
ZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxl
Y3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9u
OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dp
dGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBz
dWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC02OTEsNiArNzEx
LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uU3VjY2VlZFdp
dGhDb29raWVzKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09B
dXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0
aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVy
Zm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBz
d2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVs
ZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAg
ICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlv
bkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJz
Omh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXph
dGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6
OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGlu
dHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0
cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6
QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0
QVBJLnJlc291cmNlcyJdOwogCkBAIC03MjcsNiArNzQ4LDcgQEAgVEVTVChTT0F1dGhvcml6YXRp
b25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uU3VjY2VlZFdpdGhSZWRpcmVjdGlvbkFuZENvb2tpZSkK
ICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlv
bkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9u
c2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3Jp
emF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBB
TDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VN
ZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBA
c2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTop
LCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJM
KSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhv
cml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpy
ZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVH
ZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAs
IDMyMCwgNTAwKV0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFNPQXV0aG9y
aXphdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CkBAIC03NjYsNiArNzg4LDcgQEAgVEVTVChT
T0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uU3VjY2VlZFdpdGhEaWZmZXJlbnRP
cmlnaW4pCiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhv
cml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJM
OnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3Jt
QXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6
bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0
ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIElu
c3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xh
c3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0
cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9u
V2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0
U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dp
dGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92
ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5T
VVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNp
bXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEku
cmVzb3VyY2VzIl07CiAKQEAgLTc5MCw2ICs4MTMsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJl
ZGlyZWN0LCBJbnRlcmNlcHRpb25TdWNjZWVkV2l0aFdhaXRpbmdTZXNzaW9uKQogICAgIENsYXNz
TWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwg
QHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRo
VVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1
dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRf
Y2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6
bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rvcihi
ZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJw
cmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJ
bnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNs
YXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29k
ZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6
YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNp
b246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBA
IC04MjUsNiArODQ5LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0
aW9uQWJvcnRlZFdpdGhXYWl0aW5nU2Vzc2lvbikKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3
aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJm
b3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8
SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3Rh
bmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3Mo
KSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlk
ZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFM
OjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9u
V2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3Zl
cnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6
emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Io
Z2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCBy
ZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJM
KSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwxID0gW1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAgICAgUmV0YWluUHRyPE5TVVJM
PiB0ZXN0VVJMMiA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1w
bGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5y
ZXNvdXJjZXMiXTsKQEAgLTg1NCw2ICs4NzksNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGly
ZWN0LCBJbnRlcmNlcHRpb25TdWNjZWVkV2l0aEFjdGl2ZVNlc3Npb25EaWRNb3ZlV2luZG93KQog
ICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9u
Q2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25z
ZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6
YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFM
OjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1l
dGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBz
ZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5Oiks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwp
KTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9y
aXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJl
c3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdl
dEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gdGVz
dFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdp
dGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdOwogCkBAIC04ODUsNiArOTExLDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwg
SW50ZXJjZXB0aW9uU3VjY2VlZFR3aWNlKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenps
ZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1B
dXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VN
ZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBA
c2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0
RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6Omdl
dFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRo
VVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlk
ZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVy
IHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRB
dXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50
ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsK
IAogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rv
cnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC05MTgsNiArOTQ1LDcgQEAgVEVT
VChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uU3VjY2VlZFN1cHByZXNzQWN0
aXZlU2Vzc2lvbikKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6Omdl
dFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVy
cHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9k
U3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVj
dG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOwog
ICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0
aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhbmNlbEF1dGhvcml6YXRpb24pLCByZWludGVycHJldF9j
YXN0PElNUD4ob3ZlcnJpZGVDYW5jZWxBdXRob3JpemF0aW9uKSk7CisgICAgSW5zdGFuY2VNZXRo
b2RTd2l6emxlciBzd2l6emxlcjUoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2Vs
ZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlv
bjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNX
aXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1h
aW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIg
c3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKIApAQCAtOTUzLDYgKzk4
MSw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvblN1Y2NlZWRT
dXBwcmVzc1dhaXRpbmdTZXNzaW9uKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIx
KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRo
b3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92
ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRo
b2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2Vs
ZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVs
ZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNP
QXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJM
Omh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJl
Z2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3
aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRo
b3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJw
cmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAog
ICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJM
Rm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6
QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC05OTQsNiArMTAyMyw3IEBAIFRFU1Qo
U09BdXRob3JpemF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvblN1Y2NlZWRTQU1MKQogICAgIENs
YXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3Mo
KSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25X
aXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRT
T0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnBy
ZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3
aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rv
cihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50
ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAg
ICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlv
bkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNl
Q29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhv
cml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9
IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRl
bnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwog
CkBAIC0xMDIyLDYgKzEwNTIsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRl
cmNlcHRpb25TdWNjZWVkU0FNTFdpdGhQU09OKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dp
enpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZv
cm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJ
TVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFu
Y2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygp
LCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRl
U2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6
OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25X
aXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVy
cmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6
bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rvcihn
ZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwp
KTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gYmFzZVVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUzIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGly
ZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKICAgICBhdXRvIHRlc3RVUkwgPSBV
UkwoVVJMKCksICJodHRwOi8vd3d3LmV4YW1wbGUuY29tIik7CkBAIC0xMDU1LDYgKzEwODYsNyBA
QCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBBdXRob3JpemF0aW9uT3B0aW9ucykKICAg
ICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNs
YXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VD
b2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0
aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6
Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50
ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRo
b2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2Vs
ZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCBy
ZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7
CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6
YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNw
b25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRB
dXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMy
MCwgNTAwKV0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFNPQXV0aG9yaXph
dGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CkBAIC0xMDc1LDYgKzExMDcsNyBAQCBURVNUKFNP
QXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25EaWROb3RIYW5kbGVUd2ljZSkKICAg
ICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNs
YXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VD
b2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0
aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6
Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50
ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRo
b2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2Vs
ZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCBy
ZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7
CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6
YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNw
b25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRB
dXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RV
UkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRo
RXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMi
XTsKIApAQCAtMTA5Niw2ICsxMTI5LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwg
SW50ZXJjZXB0aW9uQ29tcGxldGVUd2ljZSkKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6
bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3Jt
QXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNl
TWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwg
QHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNl
dERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpn
ZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0
aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxl
ciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0
QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWlu
dGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7
CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVd
IFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0
b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKIApAQCAtMTExNiw3ICsxMTUwLDggQEAg
VEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uQ29tcGxldGVUd2ljZSkK
IFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3lJ
Z25vcmUpCiB7CiAgICAgcmVzZXRTdGF0ZSgpOwotICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dp
enpsZXIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9y
bUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElN
UD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBDbGFzc01l
dGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBz
ZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVS
TCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRo
b3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6
cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRl
R2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiB0
ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIg
d2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3Vy
Y2VzIl07CiAKQEAgLTExMzcsNiArMTE3Miw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJl
Y3QsIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3lBbGxvd0FzeW5jKQogICAgIENsYXNzTWV0aG9k
U3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVj
dG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7
CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6
YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJ
TVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3
aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1
dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCks
IEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21w
bGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25I
aW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJo
dG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC0xMTYy
LDcgKzExOTgsOCBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBTT0F1dGhvcml6YXRp
b25Mb2FkUG9saWN5QWxsb3dBc3luYykKIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIFNP
QXV0aG9yaXphdGlvbkxvYWRQb2xpY3lJZ25vcmVBc3luYykKIHsKICAgICByZXNldFN0YXRlKCk7
Ci0gICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcihQQUw6OmdldFNPQXV0aG9yaXphdGlv
bkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9u
c2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3Jp
emF0aW9uV2l0aFVSTCkpOworICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6
Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0
aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRl
Q2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6
emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Io
Z2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCBy
ZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJM
KSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGly
ZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKIApAQCAtMTE4Nyw2ICsxMjI0LDcg
QEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uU3VjY2VlZFdpdGhV
SSkKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXph
dGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVz
cG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRo
b3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIy
KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFu
Y2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygp
LCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9k
eTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRo
VVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1
dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVS
TDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+
IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxl
IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNv
dXJjZXMiXTsKIApAQCAtMTIyMCw2ICsxMjU4LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRp
cmVjdCwgSW50ZXJjZXB0aW9uQ2FuY2VsV2l0aFVJKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIg
c3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBl
cmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5z
dGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFz
cygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJy
aWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQ
QUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRp
b25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihv
dmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3
aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rv
cihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhV
UkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1
bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJk
aXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC0xMjUyLDYgKzEyOTEs
NyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25FcnJvcldpdGhV
SSkKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXph
dGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVz
cG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRo
b3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIy
KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFu
Y2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygp
LCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9k
eTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRo
VVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1
dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVS
TDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+
IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxl
IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNv
dXJjZXMiXTsKIApAQCAtMTI4NCw2ICsxMzI0LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRp
cmVjdCwgSW50ZXJjZXB0aW9uU3VjY2VlZFN1cHByZXNzQWN0aXZlU2Vzc2lvbldpdGhVSSkKICAg
ICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlv
bkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4o
b3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenps
ZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9y
aXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJ
TVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0
aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNl
bGVjdG9yKGNhbmNlbEF1dGhvcml6YXRpb24pLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVDYW5jZWxBdXRob3JpemF0aW9uKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6
emxlcjUoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9y
aXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJl
dF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAg
ICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZv
clJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAi
VGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKIApAQCAtMTMyMyw2ICsxMzY0LDcgQEAgVEVTVChT
T0F1dGhvcml6YXRpb25SZWRpcmVjdCwgU2hvd1VJVHdpY2UpCiAgICAgQ2xhc3NNZXRob2RTd2l6
emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Io
Y2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJl
dF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAg
ICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlv
bkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4o
b3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenps
ZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9y
aXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJ
TVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0
aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNl
bGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRp
b246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRz
V2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwi
IHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTEzNjAsNiAr
MTQwMiw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIE5TTm90aWZpY2F0aW9uQ2Vu
dGVyKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3Jp
emF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpy
ZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1
dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxl
cjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0
YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNz
KCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBC
b2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldp
dGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNP
QXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRo
VVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVy
cmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VS
TD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1w
bGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJl
c291cmNlcyJdOwogCkBAIC0xNDIwLDYgKzE0NjMsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblBv
cFVwLCBOb0ludGVyY2VwdGlvbnNTdWJGcmFtZSkKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3
aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJm
b3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8
SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3Rh
bmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3Mo
KSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlk
ZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFM
OjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9u
V2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3Zl
cnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6
emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Io
Z2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCBy
ZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJM
KSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IGJhc2VVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAgICAgUmV0YWluUHRyPE5TVVJM
PiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBs
ZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl07CkBAIC0xNDQ2LDYgKzE0OTAsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblBvcFVw
LCBOb0ludGVyY2VwdGlvbnNXaXRob3V0VXNlckdlc3R1cmUpCiAgICAgQ2xhc3NNZXRob2RTd2l6
emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Io
Y2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJl
dF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAg
ICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlv
bkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4o
b3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenps
ZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9y
aXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJ
TVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0
aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNl
bGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRp
b246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRz
V2l0aFVSTCkpOwogCiAgICAgLy8gVGhlIGRlZmF1bHQgdmFsdWUgb2YgamF2YVNjcmlwdENhbk9w
ZW5XaW5kb3dzQXV0b21hdGljYWxseSBpcyBOTyBvbiBpT1MsIGFuZCBZRVMgb24gbWFjT1MuCiAg
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKQEAgLTE0NjYsNiArMTUxMSw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9u
UG9wVXAsIEludGVyY2VwdGlvbkVycm9yKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenps
ZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1B
dXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VN
ZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBA
c2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0
RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6Omdl
dFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRo
VVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlk
ZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVy
IHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRB
dXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50
ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsK
IAogICAgIFJldGFpblB0cjxOU1VSTD4gYmFzZVVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0
b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRl
c3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3
aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXMiXTsKQEAgLTE1MDIsNiArMTU0OCw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUG9wVXAsIElu
dGVyY2VwdGlvbkNhbmNlbCkKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6
OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXph
dGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlk
ZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dp
enpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9y
KHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRl
KSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhv
cml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRw
SGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1
dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxl
cjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXph
dGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9j
YXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBS
ZXRhaW5QdHI8TlNVUkw+IGJhc2VVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJl
c291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRl
c3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0g
W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVu
c2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CkBA
IC0xNTM1LDYgKzE1ODIsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblBvcFVwLCBJbnRlcmNlcHRp
b25TdWNjZWVkQ2xvc2VCeUl0c2VsZikKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVy
MShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0
aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihv
dmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0
aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNl
bGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERl
bGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRT
T0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVS
TDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVC
ZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBz
d2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0
aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVy
cHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAK
ICAgICBSZXRhaW5QdHI8TlNVUkw+IGJhc2VVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVS
TEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9y
eTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAgICAgYXV0byB0ZXN0VVJMID0gVVJMKFVS
TCgpLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpOwpAQCAtMTU3MSw2ICsxNjE5LDcgQEAgVEVT
VChTT0F1dGhvcml6YXRpb25Qb3BVcCwgSW50ZXJjZXB0aW9uU3VjY2VlZENsb3NlQnlQYXJlbnQp
CiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRp
b25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3Bv
bnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9y
aXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQ
QUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCBy
ZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNl
TWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwg
QHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVS
TCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRo
b3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6
cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRl
R2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiBi
YXNlVVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZTIi
IHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291
cmNlcyJdOwogICAgIGF1dG8gdGVzdFVSTCA9IFVSTChVUkwoKSwgImh0dHA6Ly93d3cuZXhhbXBs
ZS5jb20iKTsKQEAgLTE2MDcsNiArMTY1Niw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUG9wVXAs
IEludGVyY2VwdGlvblN1Y2NlZWRDbG9zZUJ5V2ViS2l0KQogICAgIENsYXNzTWV0aG9kU3dpenps
ZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNh
blBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRf
Y2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAg
SW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25D
bGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92
ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVy
MyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6
YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhv
ZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxl
Y3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9u
OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dp
dGhVUkwpKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gYmFzZVVSTCA9IFtbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIg
c3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKICAgICBhdXRvIHRlc3RV
UkwgPSBVUkwoVVJMKCksICJodHRwOi8vd3d3LmV4YW1wbGUuY29tIik7CkBAIC0xNjQzLDYgKzE2
OTMsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblBvcFVwLCBJbnRlcmNlcHRpb25TdWNjZWVkV2l0
aE90aGVySHR0cFN0YXR1c0NvZGUpCiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEo
UEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhv
cml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3Zl
cnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1ldGhv
ZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxl
Y3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxl
Z2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09B
dXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6
aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVn
aW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dp
enpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhv
cml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnBy
ZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAg
ICAgUmV0YWluUHRyPE5TVVJMPiBiYXNlVVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxG
b3JSZXNvdXJjZTpAInNpbXBsZTIiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6
QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVS
TCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhF
eHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJd
OwpAQCAtMTY4Myw2ICsxNzM0LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwgSW50ZXJj
ZXB0aW9uU3VjY2VlZFdpdGhDb29raWUpCiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxl
cjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1
dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4o
b3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBJbnN0YW5jZU1l
dGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBz
ZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXRE
ZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0
U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhV
Ukw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRl
QmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIg
c3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1
dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwog
CiAgICAgUmV0YWluUHRyPE5TVVJMPiBiYXNlVVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBV
UkxGb3JSZXNvdXJjZTpAInNpbXBsZTIiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rv
cnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogICAgIGF1dG8gdGVzdFVSTCA9IFVSTChV
UkwoKSwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKTsKQEAgLTE3MTksNiArMTc3MSw3IEBAIFRF
U1QoU09BdXRob3JpemF0aW9uUG9wVXAsIEludGVyY2VwdGlvblN1Y2NlZWRUd2ljZSkKICAgICBD
bGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNz
KCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2Rl
OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9u
V2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0
U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJw
cmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RT
d2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0
b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWlu
dGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7Cisg
ICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRp
b25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25z
ZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRo
b3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IGJhc2VVUkwg
PSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4
dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07
CiAgICAgYXV0byB0ZXN0VVJMID0gVVJMKFVSTCgpLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIp
OwpAQCAtMTc1OSw2ICsxODEyLDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwgSW50ZXJj
ZXB0aW9uU3VjY2VlZFN1cHByZXNzQWN0aXZlU2Vzc2lvbikKICAgICBJbnN0YW5jZU1ldGhvZFN3
aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rv
cihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0
ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRo
b3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0
cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5B
dXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenps
ZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhbmNlbEF1dGhv
cml6YXRpb24pLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5jZWxBdXRob3JpemF0
aW9uKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjUoUEFMOjpnZXRTT0F1
dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVS
TDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+
IGJhc2VVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxl
MiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl07CiAgICAgYXV0byB0ZXN0VVJMID0gVVJMKFVSTCgpLCAiaHR0cDovL3d3dy5leGFt
cGxlLmNvbSIpOwpAQCAtMTgyMCw2ICsxODc0LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25Qb3BV
cCwgSW50ZXJjZXB0aW9uU3VjY2VlZE5ld1dpbmRvd05hdmlnYXRpb24pCiAgICAgQ2xhc3NNZXRo
b2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2Vs
ZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWlu
dGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwp
KTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9y
aXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0
PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIg
c3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2lu
QXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRf
Y2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3Rh
bmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3Mo
KSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNv
bXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlv
bkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiBiYXNlVVJMID0gW1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZTIiIHdpdGhFeHRlbnNpb246
QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogICAgIGF1
dG8gdGVzdFVSTCA9IFVSTChVUkwoKSwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKTsKQEAgLTE4
NTYsNiArMTkxMSw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUG9wVXAsIEF1dGhvcml6YXRpb25P
cHRpb25zKQogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRo
b3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVS
TDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9y
bUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6
emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdh
dGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJ
bnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNs
YXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0
dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlv
bldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6Omdl
dFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNX
aXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihv
dmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIGF1dG8gdGVzdFVS
TCA9IFVSTChVUkwoKSwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKTsKICAgICBhdXRvIHRlc3RI
dG1sID0gZ2VuZXJhdGVIdG1sKG9wZW5lclRlbXBsYXRlLCB0ZXN0VVJMLnN0cmluZygpKTsKQEAg
LTE4NzksNyArMTkzNSw4IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUG9wVXAsIEF1dGhvcml6YXRp
b25PcHRpb25zKQogVEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwgU09BdXRob3JpemF0aW9uTG9h
ZFBvbGljeUlnbm9yZSkKIHsKICAgICByZXNldFN0YXRlKCk7Ci0gICAgQ2xhc3NNZXRob2RTd2l6
emxlciBzd2l6emxlcihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rvcihj
YW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0
X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAg
IENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xh
c3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNv
ZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRp
b25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpn
ZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRz
V2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4o
b3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBhdXRvIHRlc3RV
UkwgPSBVUkwoVVJMKCksICJodHRwOi8vd3d3LmV4YW1wbGUuY29tIik7CiAgICAgYXV0byB0ZXN0
SHRtbCA9IGdlbmVyYXRlSHRtbChvcGVuZXJUZW1wbGF0ZSwgdGVzdFVSTC5zdHJpbmcoKSk7CkBA
IC0xOTA3LDYgKzE5NjQsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblBvcFVwLCBTT0F1dGhvcml6
YXRpb25Mb2FkUG9saWN5QWxsb3dBc3luYykKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6
bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3Jt
QXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIEluc3RhbmNl
TWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwg
QHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNl
dERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpn
ZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0
aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxl
ciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0
QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWlu
dGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7
CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IGJhc2VVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVd
IFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVj
dG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAgICAgYXV0byB0ZXN0VVJMID0gVVJM
KFVSTCgpLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpOwpAQCAtMTk0Miw3ICsyMDAwLDggQEAg
VEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwgU09BdXRob3JpemF0aW9uTG9hZFBvbGljeUFsbG93
QXN5bmMpCiBURVNUKFNPQXV0aG9yaXphdGlvblBvcFVwLCBTT0F1dGhvcml6YXRpb25Mb2FkUG9s
aWN5SWdub3JlQXN5bmMpCiB7CiAgICAgcmVzZXRTdGF0ZSgpOwotICAgIENsYXNzTWV0aG9kU3dp
enpsZXIgc3dpenpsZXIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Io
Y2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJl
dF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAg
ICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNs
YXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VD
b2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0
aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6
Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50
c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgYXV0byB0ZXN0
VVJMID0gVVJMKFVSTCgpLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpOwogICAgIGF1dG8gdGVz
dEh0bWwgPSBnZW5lcmF0ZUh0bWwob3BlbmVyVGVtcGxhdGUsIHRlc3RVUkwuc3RyaW5nKCkpOwpA
QCAtMTk4Niw2ICsyMDQ1LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25TdWJGcmFtZSwgTm9JbnRl
cmNlcHRpb25zTm9uQXBwbGVGaXJzdFBhcnR5TWFpbkZyYW1lKQogICAgIENsYXNzTWV0aG9kU3dp
enpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9y
KGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnBy
ZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAg
ICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRp
b25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6
bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhv
cml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8
SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1l
dGhvZFN3aXp6bGVyIHN3aXp6bGVyNShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBz
ZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0
aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50
c1dpdGhVUkwpKTsKIAogICAgIGF1dG8gdGVzdEh0bWwgPSBnZW5lcmF0ZUh0bWwocGFyZW50VGVt
cGxhdGUsIFVSTChVUkwoKSwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKS5zdHJpbmcoKSk7CiAK
QEAgLTIwMDcsNiArMjA2Nyw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uU3ViRnJhbWUsIEludGVy
Y2VwdGlvbkVycm9yKQogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6
Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50
ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRo
b2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2Vs
ZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCBy
ZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7
CiAgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjQoW0FLQXV0aG9yaXphdGlvbkNvbnRy
b2xsZXIgY2xhc3NdLCBAc2VsZWN0b3IoaXNVUkxGcm9tQXBwbGVPd25lZERvbWFpbjopLCByZWlu
dGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVJc1VSTEZyb21BcHBsZU93bmVkRG9tYWluKSk7Cisg
ICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjUoUEFMOjpnZXRTT0F1dGhvcml6YXRp
b25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25z
ZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRo
b3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IGJhc2VVUkwg
PSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4
dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07
CiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBV
UkxGb3JSZXNvdXJjZTpAIkdldFNlc3Npb25Db29raWUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBz
dWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwpAQCAtMjAzOCw2ICsyMDk5
LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25TdWJGcmFtZSwgSW50ZXJjZXB0aW9uU3VjY2VzcykK
ICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXph
dGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElN
UD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dp
enpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0
aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIENsYXNzTWV0
aG9kU3dpenpsZXIgc3dpenpsZXI0KFtBS0F1dGhvcml6YXRpb25Db250cm9sbGVyIGNsYXNzXSwg
QHNlbGVjdG9yKGlzVVJMRnJvbUFwcGxlT3duZWREb21haW46KSwgcmVpbnRlcnByZXRfY2FzdDxJ
TVA+KG92ZXJyaWRlSXNVUkxGcm9tQXBwbGVPd25lZERvbWFpbikpOworICAgIEluc3RhbmNlTWV0
aG9kU3dpenpsZXIgc3dpenpsZXI1KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNl
bGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRp
b246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRz
V2l0aFVSTCkpOwogCiAgICAgYXV0byB0ZXN0VVJMID0gVVJMKFVSTCgpLCAiaHR0cDovL3d3dy5l
eGFtcGxlLmNvbSIpOwogICAgIGF1dG8gdGVzdEh0bWwgPSBnZW5lcmF0ZUh0bWwocGFyZW50VGVt
cGxhdGUsIHRlc3RVUkwuc3RyaW5nKCkpOwpAQCAtMjA2NSw2ICsyMTI3LDcgQEAgVEVTVChTT0F1
dGhvcml6YXRpb25TdWJGcmFtZSwgSW50ZXJjZXB0aW9uU3VjY2VlZFdpdGhPdGhlckh0dHBTdGF0
dXNDb2RlKQogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09B
dXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0
X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6
emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Io
YmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVy
cHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CiAgICAg
Q2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjQoW0FLQXV0aG9yaXphdGlvbkNvbnRyb2xsZXIg
Y2xhc3NdLCBAc2VsZWN0b3IoaXNVUkxGcm9tQXBwbGVPd25lZERvbWFpbjopLCByZWludGVycHJl
dF9jYXN0PElNUD4ob3ZlcnJpZGVJc1VSTEZyb21BcHBsZU93bmVkRG9tYWluKSk7CisgICAgSW5z
dGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjUoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFz
cygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6
Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0
aW9uSGludHNXaXRoVVJMKSk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IGJhc2VVUkwgPSBbW05T
QnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lv
bjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAgICAg
UmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JS
ZXNvdXJjZTpAIkdldFNlc3Npb25Db29raWUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwpAQCAtMjEwMCw2ICsyMTYzLDcgQEAg
VEVTVChTT0F1dGhvcml6YXRpb25TdWJGcmFtZSwgSW50ZXJjZXB0aW9uU3VjY2VlZFdpdGhDb29r
aWUpCiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhv
cml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVy
IHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdp
bkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0
X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBDbGFz
c01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChbQUtBdXRob3JpemF0aW9uQ29udHJvbGxlciBjbGFz
c10sIEBzZWxlY3Rvcihpc1VSTEZyb21BcHBsZU93bmVkRG9tYWluOiksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihvdmVycmlkZUlzVVJMRnJvbUFwcGxlT3duZWREb21haW4pKTsKKyAgICBJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCks
IEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21w
bGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25I
aW50c1dpdGhVUkwpKTsKIAogICAgIGF1dG8gdGVzdFVSTCA9IFVSTChVUkwoKSwgImh0dHA6Ly93
d3cuZXhhbXBsZS5jb20iKTsKICAgICBhdXRvIHRlc3RIdG1sID0gZ2VuZXJhdGVIdG1sKHBhcmVu
dFRlbXBsYXRlLCB0ZXN0VVJMLnN0cmluZygpKTsKQEAgLTIxMjcsNiArMjE5MSw3IEBAIFRFU1Qo
U09BdXRob3JpemF0aW9uU3ViRnJhbWUsIEludGVyY2VwdGlvblN1Y2Nlc3NUd2ljZSkKICAgICBJ
bnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNs
YXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3Zl
cnJpZGVTZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIz
KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXph
dGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIENsYXNzTWV0aG9kU3dp
enpsZXIgc3dpenpsZXI0KFtBS0F1dGhvcml6YXRpb25Db250cm9sbGVyIGNsYXNzXSwgQHNlbGVj
dG9yKGlzVVJMRnJvbUFwcGxlT3duZWREb21haW46KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92
ZXJyaWRlSXNVUkxGcm9tQXBwbGVPd25lZERvbWFpbikpOworICAgIEluc3RhbmNlTWV0aG9kU3dp
enpsZXIgc3dpenpsZXI1KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9y
KGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVS
TCkpOwogCiAgICAgYXV0byB0ZXN0VVJMID0gVVJMKFVSTCgpLCAiaHR0cDovL3d3dy5leGFtcGxl
LmNvbSIpOwogICAgIGF1dG8gdGVzdEh0bWwgPSBnZW5lcmF0ZUh0bWwocGFyZW50VGVtcGxhdGUs
IHRlc3RVUkwuc3RyaW5nKCkpOwpAQCAtMjE1OSw2ICsyMjI0LDcgQEAgVEVTVChTT0F1dGhvcml6
YXRpb25TdWJGcmFtZSwgQXV0aG9yaXphdGlvbk9wdGlvbnMpCiAgICAgSW5zdGFuY2VNZXRob2RT
d2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0
b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdh
dGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0
aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0
dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2lu
QXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVy
NChbQUtBdXRob3JpemF0aW9uQ29udHJvbGxlciBjbGFzc10sIEBzZWxlY3Rvcihpc1VSTEZyb21B
cHBsZU93bmVkRG9tYWluOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUlzVVJMRnJv
bUFwcGxlT3duZWREb21haW4pKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVy
NShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0
aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIGF1
dG8gdGVzdFVSTCA9IFVSTChVUkwoKSwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKTsKICAgICBh
dXRvIHRlc3RIdG1sID0gZ2VuZXJhdGVIdG1sKHBhcmVudFRlbXBsYXRlLCB0ZXN0VVJMLnN0cmlu
ZygpKTsKQEAgLTIxNzYsNyArMjI0Miw4IEBAIFRFU1QoU09BdXRob3JpemF0aW9uU3ViRnJhbWUs
IEF1dGhvcml6YXRpb25PcHRpb25zKQogVEVTVChTT0F1dGhvcml6YXRpb25TdWJGcmFtZSwgU09B
dXRob3JpemF0aW9uTG9hZFBvbGljeUlnbm9yZSkKIHsKICAgICByZXNldFN0YXRlKCk7Ci0gICAg
Q2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNz
KCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2Rl
OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9u
V2l0aFVSTCkpOworICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09B
dXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0
aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVy
Zm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBz
d2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0
aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVy
cHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CiAK
ICAgICBhdXRvIHRlc3RVUkwgPSBVUkwoVVJMKCksICJodHRwOi8vd3d3LmV4YW1wbGUuY29tIik7
CiAgICAgYXV0byB0ZXN0SHRtbCA9IGdlbmVyYXRlSHRtbChwYXJlbnRUZW1wbGF0ZSwgdGVzdFVS
TC5zdHJpbmcoKSk7CkBAIC0yMjAwLDYgKzIyNjcsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblN1
YkZyYW1lLCBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5QWxsb3dBc3luYykKICAgICBJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCks
IEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVT
ZXREZWxlZ2F0ZSkpOwogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6
Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldp
dGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJy
aWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOwogICAgIENsYXNzTWV0aG9kU3dpenpsZXIg
c3dpenpsZXI0KFtBS0F1dGhvcml6YXRpb25Db250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKGlz
VVJMRnJvbUFwcGxlT3duZWREb21haW46KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRl
SXNVUkxGcm9tQXBwbGVPd25lZERvbWFpbikpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIg
c3dpenpsZXI1KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1
dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwog
CiAgICAgYXV0byB0ZXN0VVJMID0gVVJMKFVSTCgpLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIp
OwogICAgIGF1dG8gdGVzdEh0bWwgPSBnZW5lcmF0ZUh0bWwocGFyZW50VGVtcGxhdGUsIHRlc3RV
Ukwuc3RyaW5nKCkpOwpAQCAtMjIyNCw3ICsyMjkyLDggQEAgVEVTVChTT0F1dGhvcml6YXRpb25T
dWJGcmFtZSwgU09BdXRob3JpemF0aW9uTG9hZFBvbGljeUFsbG93QXN5bmMpCiBURVNUKFNPQXV0
aG9yaXphdGlvblN1YkZyYW1lLCBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5SWdub3JlQXN5bmMp
CiB7CiAgICAgcmVzZXRTdGF0ZSgpOwotICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIo
UEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhv
cml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3Zl
cnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBDbGFzc01ldGhvZFN3
aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rv
cihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJw
cmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOwor
ICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0
aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9u
c2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0
aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgYXV0byB0ZXN0VVJMID0gVVJMKFVSTCgp
LCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpOwogICAgIGF1dG8gdGVzdEh0bWwgPSBnZW5lcmF0
ZUh0bWwocGFyZW50VGVtcGxhdGUsIHRlc3RVUkwuc3RyaW5nKCkpOwpAQCAtMjI0OSw2ICsyMzE4
LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25TdWJGcmFtZSwgSW50ZXJjZXB0aW9uRXJyb3JXaXRo
UmVmZXJyZXIpCiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRT
T0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnBy
ZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJbnN0YW5jZU1ldGhvZFN3
aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rv
cihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50
ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKICAg
ICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChbQUtBdXRob3JpemF0aW9uQ29udHJvbGxl
ciBjbGFzc10sIEBzZWxlY3Rvcihpc1VSTEZyb21BcHBsZU93bmVkRG9tYWluOiksIHJlaW50ZXJw
cmV0X2Nhc3Q8SU1QPihvdmVycmlkZUlzVVJMRnJvbUFwcGxlT3duZWREb21haW4pKTsKKyAgICBJ
bnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNs
YXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29k
ZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6
YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIFRDUFNlcnZlciBzZXJ2ZXIoW3BhcmVudEh0bWwg
PSBnZW5lcmF0ZUh0bWwocGFyZW50VGVtcGxhdGUsICJzaW1wbGUuaHRtbCIpLCBmcmFtZUh0bWwg
PSBnZW5lcmF0ZUh0bWwoaWZyYW1lVGVtcGxhdGUsICJwYXJlbnQucG9zdE1lc3NhZ2UoJ1JlZmVy
cmVyOiAnICsgZG9jdW1lbnQucmVmZXJyZXIsICcqJyk7IildIChpbnQgc29ja2V0KSB7CiAgICAg
ICAgIE5TU3RyaW5nICpmaXJzdFJlc3BvbnNlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
CkBAIC0yMjk0LDYgKzIzNjQsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblN1YkZyYW1lLCBJbnRl
cmNlcHRpb25FcnJvck1lc3NhZ2VPcmRlcikKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3
aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxl
Z2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOwogICAg
IEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9u
Q2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6
aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0
aW9uV2l0aFVSTCkpOwogICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFtBS0F1dGhv
cml6YXRpb25Db250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKGlzVVJMRnJvbUFwcGxlT3duZWRE
b21haW46KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlSXNVUkxGcm9tQXBwbGVPd25l
ZERvbWFpbikpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI1KFBBTDo6Z2V0
U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dp
dGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92
ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOwogCiAgICAgUmV0YWluUHRyPE5T
VVJMPiBiYXNlVVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNp
bXBsZTIiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdOwogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUg
bWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJHZXRTZXNzaW9uQ29va2llIiB3aXRoRXh0ZW5z
aW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKQEAg
LTIzMjAsNiArMjM5MSw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uU3ViRnJhbWUsIEludGVyY2Vw
dGlvblN1Y2Nlc3NNZXNzYWdlT3JkZXIpCiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6
emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdh
dGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKICAgICBJ
bnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNs
YXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0
dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlv
bldpdGhVUkwpKTsKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChbQUtBdXRob3Jp
emF0aW9uQ29udHJvbGxlciBjbGFzc10sIEBzZWxlY3Rvcihpc1VSTEZyb21BcHBsZU93bmVkRG9t
YWluOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUlzVVJMRnJvbUFwcGxlT3duZWRE
b21haW4pKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNShQQUw6OmdldFNP
QXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRo
VVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVy
cmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKIAogICAgIGF1dG8gdGVzdFVSTCA9
IFVSTChVUkwoKSwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKTsKICAgICBhdXRvIHRlc3RIdG1s
ID0gZ2VuZXJhdGVIdG1sKHBhcmVudFRlbXBsYXRlLCB0ZXN0VVJMLnN0cmluZygpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>