<?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>214905</bug_id>
          
          <creation_ts>2020-07-28 18:11:28 -0700</creation_ts>
          <short_desc>-[WKWebsiteDataStore _renameOrigin:] needs to support IndexedDB renames</short_desc>
          <delta_ts>2020-07-31 10:44:25 -0700</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 API</component>
          <version>WebKit Local 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="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jsbell</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1675868</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2020-07-28 18:11:28 -0700</bug_when>
    <thetext>For Web Extensions in Safari, we need to rename origins between launches. Right now we are using the -[WKWebsiteDataStore _renameOrigin:] SPI, but it only supports LocalStorage. We need to support IndexedDB as well.

See NetworkProcess::renameOriginInWebsiteData() for where the additional WebsiteDataType::IndexedDBDatabases type support needs added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675869</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-28 18:11:40 -0700</bug_when>
    <thetext>&lt;rdar://problem/66247978&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675870</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-28 18:12:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/66248009&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675871</commentid>
    <comment_count>3</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2020-07-28 18:12:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/66247978&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675872</commentid>
    <comment_count>4</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2020-07-28 18:19:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/64790993&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676537</commentid>
    <comment_count>5</comment_count>
      <attachid>405614</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-07-30 14:06:09 -0700</bug_when>
    <thetext>Created attachment 405614
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676538</commentid>
    <comment_count>6</comment_count>
      <attachid>405615</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-07-30 14:07:00 -0700</bug_when>
    <thetext>Created attachment 405615
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676555</commentid>
    <comment_count>7</comment_count>
      <attachid>405615</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2020-07-30 14:30:04 -0700</bug_when>
    <thetext>Comment on attachment 405615
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:616
&gt; +    auto filteredTypes = [dataTypes objectsPassingTest:^BOOL(id obj, BOOL *stop) {
&gt; +        NSString *type = (NSString *)obj;
&gt; +        NSSet *supportedTypes = [NSSet setWithObjects:WKWebsiteDataTypeLocalStorage, WKWebsiteDataTypeIndexedDBDatabases, nil];
&gt; +        return ![supportedTypes containsObject:type];
&gt; +    }];
&gt; +    if (filteredTypes.count) {

A better way to do this would be:

NSSet *supportedTypes = [NSSet setWithObjects:WKWebsiteDataTypeLocalStorage, WKWebsiteDataTypeIndexedDBDatabases, nil];
if (![dataTypes isSubsetOfSet:supportedTypes])
    [NSException raise:...];

Calling the completion handler after the exception is not needed. The exception ended execution of the method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676566</commentid>
    <comment_count>8</comment_count>
      <attachid>405615</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-07-30 14:43:37 -0700</bug_when>
    <thetext>Comment on attachment 405615
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:616
&gt;&gt; +    if (filteredTypes.count) {
&gt; 
&gt; A better way to do this would be:
&gt; 
&gt; NSSet *supportedTypes = [NSSet setWithObjects:WKWebsiteDataTypeLocalStorage, WKWebsiteDataTypeIndexedDBDatabases, nil];
&gt; if (![dataTypes isSubsetOfSet:supportedTypes])
&gt;     [NSException raise:...];
&gt; 
&gt; Calling the completion handler after the exception is not needed. The exception ended execution of the method.

Will update!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676567</commentid>
    <comment_count>9</comment_count>
      <attachid>405623</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-07-30 14:44:33 -0700</bug_when>
    <thetext>Created attachment 405623
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676608</commentid>
    <comment_count>10</comment_count>
      <attachid>405623</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-30 16:11:17 -0700</bug_when>
    <thetext>Comment on attachment 405623
Patch

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

&gt; Source/WebCore/Modules/indexeddb/server/IDBServer.cpp:721
&gt; +    renameOriginForVersion(&quot;v0&quot;);

Why would we want to rename v0?  The SPI user of this will only have v1, I think.

&gt; Source/WebKit/NetworkProcess/IndexedDB/WebIDBServer.cpp:101
&gt; +        postTaskReply(CrossThreadTask([callback = WTFMove(callback)]() mutable {

Could this be simpler instead of making a lambda just to wrap a CompletionHandler?
postTaskReply(CrossThreadTask(WTFMove(callback)));

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:561
&gt; +    RetainPtr&lt;WebsiteDataStoreCustomPathsMessageHandler&gt; handler = adoptNS([[WebsiteDataStoreCustomPathsMessageHandler alloc] init]);

These could use auto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676717</commentid>
    <comment_count>11</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-07-30 21:55:50 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #10)
&gt; Comment on attachment 405623 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=405623&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/server/IDBServer.cpp:721
&gt; &gt; +    renameOriginForVersion(&quot;v0&quot;);
&gt; 
&gt; Why would we want to rename v0?  The SPI user of this will only have v1, I
&gt; think.
&gt; 

I have no idea about that so I rename both. Will update.

&gt; &gt; Source/WebKit/NetworkProcess/IndexedDB/WebIDBServer.cpp:101
&gt; &gt; +        postTaskReply(CrossThreadTask([callback = WTFMove(callback)]() mutable {
&gt; 
&gt; Could this be simpler instead of making a lambda just to wrap a
&gt; CompletionHandler?
&gt; postTaskReply(CrossThreadTask(WTFMove(callback)));
&gt; 
Yes.

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:561
&gt; &gt; +    RetainPtr&lt;WebsiteDataStoreCustomPathsMessageHandler&gt; handler = adoptNS([[WebsiteDataStoreCustomPathsMessageHandler alloc] init]);
&gt; 
&gt; These could use auto.

Okay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676856</commentid>
    <comment_count>12</comment_count>
      <attachid>405702</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-07-31 10:07:07 -0700</bug_when>
    <thetext>Created attachment 405702
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676872</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-31 10:44:24 -0700</bug_when>
    <thetext>Committed r265149: &lt;https://trac.webkit.org/changeset/265149&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 405702.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405614</attachid>
            <date>2020-07-30 14:06:09 -0700</date>
            <delta_ts>2020-07-30 14:06:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214905-20200730140608.patch</filename>
            <type>text/plain</type>
            <size>16756</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjllMDdhODdkYzQ4YTFm
OGFkMjFiY2QzYTJjOGMyZTUxZDE2ZTUyOC4uNmZhY2RhNTlhYmJkM2FkZWQ4YzY2ODNjNzEzY2Ez
MTNmMzQzYzI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA3LTMwICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgLVtXS1dlYnNpdGVEYXRhU3Rv
cmUgX3JlbmFtZU9yaWdpbjpdIG5lZWRzIHRvIHN1cHBvcnQgSW5kZXhlZERCIHJlbmFtZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDkwNQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNjYyNDc5Nzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVG8gZG8gdGhlIHJlbmFtaW5nLCB3ZSBjbG9zZSBhbGwg
ZXhpc3RpbmcgZGF0YWJhc2VzIHdob3NlIHRvcCBvcmlnaW4gaXMgb2xkIG9yaWdpbiwgYW5kIG1v
dmUgYWxsIGZpbGVzIGluIAorICAgICAgICBkaXJlY3Rvcnkgb2Ygb2xkIG9yaWdpbiB0byB0aGF0
IG9mIG5ldyBvcmlnaW4uCisKKyAgICAgICAgQVBJIHRlc3Q6IFdlYktpdC5XZWJzaXRlRGF0YVN0
b3JlUmVuYW1lT3JpZ2luRm9ySW5kZXhlZERhdGFiYXNlCisKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6SURCU2VydmVyOjpjbG9zZURhdGFiYXNlc0Zvck9yaWdpbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lu
cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6cmVuYW1lT3JpZ2lu
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmg6CisKIDIw
MjAtMDctMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtl
IHN1cmUgcGxheWJhY2sgc3RhdGUgY29uc3RhbnRzIHJlbWFpbiBvbiBPc2NpbGxhdG9yTm9kZSBm
b3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkNzNiZTM2YjM4NGVjYjRlMDJk
MWE5YWM2MDc0MTAwYTY1YzIwMTliLi43YjllZDI0YWZhNThhODJhMTUwN2ZmYzc4NTU2ZDgzMGY5
MWJhZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTA3LTMwICBTaWh1aSBMaXUg
IDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jl
bmFtZU9yaWdpbjpdIG5lZWRzIHRvIHN1cHBvcnQgSW5kZXhlZERCIHJlbmFtZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDkwNQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjYyNDc5Nzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpyZW5hbWVPcmlnaW4pOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpyZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJz
aXRlRGF0YVN0b3JlIF9yZW5hbWVPcmlnaW46dG86Zm9yRGF0YU9mVHlwZXM6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisKIDIwMjAtMDctMjkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIEltcHJvdmUgcmFuZ2UgaWRpb21zIGFuZCBvdGhlciBjaGFuZ2VzIHRvIHByZXBh
cmUgdGhlIHdheSBmb3IgbW9yZSByZWR1Y3Rpb24gaW4gbGl2ZSByYW5nZSB1c2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAK
aW5kZXggMzAyZDFhNzAxMmM0YTlmMGI3MmVkNWIwZjRjNzAxY2VlNDMwMDZlYy4uNTAzMDRiOTZi
M2NkNjhkNTIyODc4YmNhZjIwZWJkZGZlZDZmNjYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTU2MiwyNiAr
NTYyLDM1IEBAIHZvaWQgSURCU2VydmVyOjpjbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVk
U2luY2UoV2FsbFRpbWUgbW9kaWZpY2F0aW9uVGltZSkKICAgICB9CiB9CiAKLXZvaWQgSURCU2Vy
dmVyOjpjbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFNlY3Vy
aXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMpCit2b2lkIElEQlNlcnZlcjo6Y2xvc2VEYXRhYmFzZXNG
b3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiB0YXJnZXRPcmlnaW5z
LCBGdW5jdGlvbjxib29sKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IENsaWVudE9y
aWdpbiYpPiYmIGZpbHRlcikKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBB
U1NFUlQobV9sb2NrLmlzSGVsZCgpKTsKIAogICAgIEhhc2hTZXQ8VW5pcXVlSURCRGF0YWJhc2Uq
PiBvcGVuRGF0YWJhc2VzOwogICAgIGZvciAoYXV0byYgZGF0YWJhc2UgOiBtX3VuaXF1ZUlEQkRh
dGFiYXNlTWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGNvbnN0IGF1dG8mIGlkZW50aWZpZXIgPSBk
YXRhYmFzZS0+aWRlbnRpZmllcigpOwotICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdp
bnMpIHsKLSAgICAgICAgICAgIGlmIChpZGVudGlmaWVyLmlzUmVsYXRlZFRvT3JpZ2luKG9yaWdp
bikpIHsKLSAgICAgICAgICAgICAgICBvcGVuRGF0YWJhc2VzLmFkZChkYXRhYmFzZS5nZXQoKSk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAg
ICAgY29uc3QgYXV0byYgZGF0YWJhc2VPcmlnaW4gPSBkYXRhYmFzZS0+aWRlbnRpZmllcigpLm9y
aWdpbigpOworICAgICAgICBib29sIGZpbHRlcmVkID0gV1RGOjphbnlPZih0YXJnZXRPcmlnaW5z
LCBbJmRhdGFiYXNlT3JpZ2luLCAmZmlsdGVyXShhdXRvJiB0YXJnZXRPcmlnaW4pIHsKKyAgICAg
ICAgICAgIHJldHVybiBmaWx0ZXIodGFyZ2V0T3JpZ2luLCBkYXRhYmFzZU9yaWdpbik7CisgICAg
ICAgIH0pOworICAgICAgICBpZiAoZmlsdGVyZWQpCisgICAgICAgICAgICBvcGVuRGF0YWJhc2Vz
LmFkZChkYXRhYmFzZS5nZXQoKSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6
IG9wZW5EYXRhYmFzZXMpIHsKICAgICAgICAgZGF0YWJhc2UtPmltbWVkaWF0ZUNsb3NlKCk7CiAg
ICAgICAgIG1fdW5pcXVlSURCRGF0YWJhc2VNYXAucmVtb3ZlKGRhdGFiYXNlLT5pZGVudGlmaWVy
KCkpOwogICAgIH0KK30KKwordm9pZCBJREJTZXJ2ZXI6OmNsb3NlQW5kRGVsZXRlRGF0YWJhc2Vz
Rm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucykKK3sK
KyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9sb2NrLmlzSGVsZCgp
KTsKKworICAgIGNsb3NlRGF0YWJhc2VzRm9yT3JpZ2lucyhvcmlnaW5zLCBbXShjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uc3QgQ2xpZW50T3JpZ2luJiBkYXRhYmFzZU9yaWdp
bikgLT4gYm9vbCB7CisgICAgICAgIHJldHVybiBkYXRhYmFzZU9yaWdpbi5pc1JlbGF0ZWQob3Jp
Z2luKTsKKyAgICB9KTsKIAogICAgIGlmICghbV9kYXRhYmFzZURpcmVjdG9yeVBhdGguaXNFbXB0
eSgpKSB7CiAgICAgICAgIHJlbW92ZURhdGFiYXNlc1dpdGhPcmlnaW5zRm9yVmVyc2lvbihvcmln
aW5zLCAidjAiKTsKQEAgLTY5NCw2ICs3MDMsMjUgQEAgdm9pZCBJREJTZXJ2ZXI6OnJlbW92ZURh
dGFiYXNlc1dpdGhPcmlnaW5zRm9yVmVyc2lvbihjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW4K
ICAgICB9CiB9CiAKK3ZvaWQgSURCU2VydmVyOjpyZW5hbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiBvbGRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYgbmV3T3JpZ2luKQoreworICAgIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IHRh
cmdldE9yaWdpbnMgPSB7IG9sZE9yaWdpbiB9OworICAgIGNsb3NlRGF0YWJhc2VzRm9yT3JpZ2lu
cyh0YXJnZXRPcmlnaW5zLCBbXShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHRhcmdldE9yaWdp
biwgY29uc3QgQ2xpZW50T3JpZ2luJiBkYXRhYmFzZU9yaWdpbikgLT4gYm9vbCB7CisgICAgICAg
IHJldHVybiBkYXRhYmFzZU9yaWdpbi50b3BPcmlnaW4gPT0gdGFyZ2V0T3JpZ2luOworICAgIH0p
OworCisgICAgYXV0byByZW5hbWVPcmlnaW5Gb3JWZXJzaW9uID0gWyZdKGNvbnN0IFN0cmluZyYg
dmVyc2lvbikgeworICAgICAgICBhdXRvIHZlcnNpb25QYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aElzb2xhdGVkQ29weSgpLCB2
ZXJzaW9uKTsKKyAgICAgICAgYXV0byBvbGRPcmlnaW5QYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KHZlcnNpb25QYXRoLCBvbGRPcmlnaW4uZGF0YWJhc2VJZGVudGlm
aWVyKCkpOworICAgICAgICBhdXRvIG5ld09yaWdpblBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQodmVyc2lvblBhdGgsIG5ld09yaWdpbi5kYXRhYmFzZUlkZW50aWZp
ZXIoKSk7CisgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9sZE9yaWdpblBhdGgp
KQorICAgICAgICAgICAgRmlsZVN5c3RlbTo6bW92ZUZpbGUob2xkT3JpZ2luUGF0aCwgbmV3T3Jp
Z2luUGF0aCk7CisgICAgfTsKKworICAgIHJlbmFtZU9yaWdpbkZvclZlcnNpb24oInYwIik7Cisg
ICAgcmVuYW1lT3JpZ2luRm9yVmVyc2lvbigidjEiKTsKK30KKwogU3RvcmFnZVF1b3RhTWFuYWdl
cjo6RGVjaXNpb24gSURCU2VydmVyOjpyZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiBv
cmlnaW4sIHVpbnQ2NF90IHRhc2tTaXplKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cnZlci5oCmluZGV4IDc3YjdmNTg0OTI4OGZlMDFkZWI0ZjJiODQ2ZWEzNWFjZjZkNzE2YTcuLmQ4
NWQ4ZWNiMTdiN2IyZWRhYjc3ZWE0NTA1Mzc1OWU3ZTNlNGZlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKQEAgLTEwMyw2
ICsxMDMsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlQW5kRGVs
ZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShXYWxsVGltZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFNlY3Vy
aXR5T3JpZ2luRGF0YT4mKTsKKyAgICB2b2lkIGNsb3NlRGF0YWJhc2VzRm9yT3JpZ2lucyhjb25z
dCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYsIEZ1bmN0aW9uPGJvb2woY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiwgY29uc3QgQ2xpZW50T3JpZ2luJik+JiYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVuYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYs
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpOwogCiAgICAgU3RvcmFnZVF1b3Rh
TWFuYWdlcjo6RGVjaXNpb24gcmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2
NF90IHRhc2tTaXplKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdWludDY0X3QgZGlza1Vz
YWdlKGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSwgY29uc3QgQ2xpZW50T3JpZ2luJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJT
ZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURC
U2VydmVyLmNwcAppbmRleCA5ODkxMWY1MjRmZmZjMmI2MjVlZjIxYjA5YmI3MTNjMGY5MGIxY2E1
Li4wNDgwN2QwYzg4ZDdjY2U3NDhiZjJkM2M2ZjI1ZjA3MTY3MmQxYmE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5j
cHAKQEAgLTg5LDYgKzg5LDIxIEBAIHZvaWQgV2ViSURCU2VydmVyOjpjbG9zZUFuZERlbGV0ZURh
dGFiYXNlc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyCiAgICAgfSk7CiB9
CiAKK3ZvaWQgV2ViSURCU2VydmVyOjpyZW5hbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBvbGRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYgbmV3T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCit7Cisg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG9sZE9yaWdpbiA9IG9sZE9yaWdpbi5pc29sYXRl
ZENvcHkoKSwgbmV3T3JpZ2luID0gbmV3T3JpZ2luLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CisKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2so
KSk7CisgICAgICAgIG1fc2VydmVyLT5yZW5hbWVPcmlnaW4ob2xkT3JpZ2luLCBuZXdPcmlnaW4p
OworICAgICAgICBwb3N0VGFza1JlcGx5KENyb3NzVGhyZWFkVGFzayhbY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAg
ICAgIH0pKTsKKyAgICB9KTsKK30KKwogdm9pZCBXZWJJREJTZXJ2ZXI6OnN1c3BlbmQoU2hvdWxk
Rm9yY2VTdG9wIHNob3VsZEZvcmNlU3RvcCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIv
V2ViSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9X
ZWJJREJTZXJ2ZXIuaAppbmRleCAxNjE1MTU1NGQ5MTIzM2VlNjU3ZGZhNmU4Mzc5N2JkNGI2ODVj
OTFiLi45NjdhOTdjMmJlNzIzOGMyMDc3ODRhNTdkMzUyNDY2NDVmZDlmNmZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIu
aApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsb3NlQW5kRGVsZXRlRGF0
YWJhc2VzTW9kaWZpZWRTaW5jZShXYWxsVGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNhbGxiYWNrKTsKICAgICB2b2lkIGNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyhj
b25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCByZW5hbWVPcmlnaW4oY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIGVudW0gY2xhc3MgU2hv
dWxkRm9yY2VTdG9wIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICB2b2lkIHN1c3BlbmQoU2hvdWxk
Rm9yY2VTdG9wKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKaW5kZXggZWJiNDE4NzQ4MTRkOGFmNmFhZWQ2ODk5ZGMzNTkxZGRkYmYwODFlMi4u
YjllYjdiOTZiZGNiNTIwMzEwMzgyMmMwY2Y1ZGRkZmQxNDdjYmZiNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTI1NTEsMTEgKzI1
NTEsMjQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzZXRRdW90YShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJl
bmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBV
UkwmIG9sZE5hbWUsIGNvbnN0IFVSTCYgbmV3TmFtZSwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4gZGF0YVR5cGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgYXV0byBhZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGF1dG8gb2xkT3JpZ2luID0gV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKG9sZE5hbWUpOworICAgIGF1dG8gbmV3T3Jp
Z2luID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKG5ld05hbWUpOworCisg
ICAgaWYgKG9sZE9yaWdpbi5pc0VtcHR5KCkgfHwgbmV3T3JpZ2luLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OkxvY2FsU3RvcmFnZSkpIHsKICAgICAgICAgaWYgKG1fc3RvcmFnZU1hbmFnZXJTZXQtPmNvbnRh
aW5zKHNlc3Npb25JRCkpCiAgICAgICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5yZW5hbWVP
cmlnaW4oc2Vzc2lvbklELCBvbGROYW1lLCBuZXdOYW1lLCBbYWdncmVnYXRvcl0geyB9KTsKICAg
ICB9CisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICBpZiAoZGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkgeworICAgICAgICBh
dXRvIHBhdGggPSBtX2lkYkRhdGFiYXNlUGF0aHMuZ2V0KHNlc3Npb25JRCk7CisgICAgICAgIGlm
ICghcGF0aC5pc0VtcHR5KCkpCisgICAgICAgICAgICB3ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5y
ZW5hbWVPcmlnaW4ob2xkT3JpZ2luLCBuZXdPcmlnaW4sIFthZ2dyZWdhdG9yXSB7IH0pOworICAg
IH0KKyNlbmRpZgogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0K
aW5kZXggMmI1YmVhNWExYTIyODBkYzgxMDg2M2Y0OWNjOThmYTNkYTQ2OWUwZC4uYmFiY2RlYzcy
ODMxMDYwZDU3MDQxMTgwZmJmZDY4YTlmODgxMjY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC02MDgs
OCArNjA4LDE2IEBAIHN0YXRpYyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZD4gdG9X
ZWJzaXRlRGF0YVJlY29yZHMoTlNBcnJheSAqZGF0YVJlY29yCiAgICAgaWYgKCFkYXRhVHlwZXMu
Y291bnQpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigpOwogCi0gICAgaWYgKGRh
dGFUeXBlcy5jb3VudCA+IDEgfHwgIVtkYXRhVHlwZXMgY29udGFpbnNPYmplY3Q6V0tXZWJzaXRl
RGF0YVR5cGVMb2NhbFN0b3JhZ2VdKQotICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZh
bGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiX3JlbmFtZU9yaWdpbiBjYW4gb25seSBiZSBj
YWxsZWQgd2l0aCBXS1dlYnNpdGVEYXRhVHlwZUxvY2FsU3RvcmFnZSByaWdodCBub3cuIl07Cisg
ICAgYXV0byBmaWx0ZXJlZFR5cGVzID0gW2RhdGFUeXBlcyBvYmplY3RzUGFzc2luZ1Rlc3Q6XkJP
T0woaWQgb2JqLCBCT09MICpzdG9wKSB7CisgICAgICAgIE5TU3RyaW5nICp0eXBlID0gKE5TU3Ry
aW5nICopb2JqOworICAgICAgICBOU1NldCAqc3VwcG9ydGVkVHlwZXMgPSBbTlNTZXQgc2V0V2l0
aE9iamVjdHM6V0tXZWJzaXRlRGF0YVR5cGVMb2NhbFN0b3JhZ2UsIFdLV2Vic2l0ZURhdGFUeXBl
SW5kZXhlZERCRGF0YWJhc2VzLCBuaWxdOworICAgICAgICByZXR1cm4gIVtzdXBwb3J0ZWRUeXBl
cyBjb250YWluc09iamVjdDp0eXBlXTsKKyAgICB9XTsKKyAgICBpZiAoZmlsdGVyZWRUeXBlcy5j
b3VudCkgeworICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNl
cHRpb24gZm9ybWF0OkAiX3JlbmFtZU9yaWdpbiBjYW4gb25seSBiZSBjYWxsZWQgd2l0aCBXS1dl
YnNpdGVEYXRhVHlwZUxvY2FsU3RvcmFnZSBhbmQgV0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJE
YXRhYmFzZXMgcmlnaHQgbm93LiJdOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
IH0KKwogICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5yZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKG9s
ZE5hbWUsIG5ld05hbWUsIFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyksIFtj
b21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIHsKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkZWZlYjBhMmIwYzVkYzFmYTg2M2U5NjI1
OGE2NGQyOTQzMzliOGNmLi42NGMyNjA1MDZiMDA0ZGZjNWNiMzY3MmQyYTQyZWE5OTI0MjRjOThm
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMjAtMDctMzAgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBlLmNvbT4K
KworICAgICAgICAtW1dLV2Vic2l0ZURhdGFTdG9yZSBfcmVuYW1lT3JpZ2luOl0gbmVlZHMgdG8g
c3VwcG9ydCBJbmRleGVkREIgcmVuYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE0OTA1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NjI0Nzk3
OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhz
Lm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
V0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtUZXN0TWVzc2FnZUhhbmRsZXIgdXNlckNvbnRlbnRD
b250cm9sbGVyOmRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOl0pOgorCiAyMDIwLTA3LTI5ICBKb25h
dGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbd2Via2l0Y29yZXB5
XSBBZGQgYW4gYXV0by1pbnN0YWxsZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0
aHMubW0KaW5kZXggZGQ5ZjMyNmNkYjAzODU3ZGUyMDg5MjU4MDAyYTFjMzQ0NTliYzM2OC4uNWVk
YjkxMTkyNjkzNzI0MWVjOGVlOTlhNmI5ZjM0N2ViNGUwMDkwZCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0
aHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRl
RGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KQEAgLTU0OCw2ICs1NDgsNzIgQEAgVEVTVChXZWJLaXQs
IFdlYnNpdGVEYXRhU3RvcmVJZkV4aXN0cykKICAgICBFWFBFQ1RfVFJVRShkYXRhU3RvcmUuX2Nv
bmZpZ3VyYXRpb24ucGVyc2lzdGVudCk7CiB9CiAKK1RFU1QoV2ViS2l0LCBXZWJzaXRlRGF0YVN0
b3JlUmVuYW1lT3JpZ2luRm9ySW5kZXhlZERhdGFiYXNlKQoreworICAgIC8vIFJlc2V0IGRlZmF1
bHREYXRhU3RvcmUgYmVmb3JlIHRlc3QuCisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsK
KyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZU
eXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2lu
Y2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAg
ZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25l
KTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICBSZXRhaW5QdHI8V2Vic2l0ZURhdGFTdG9yZUN1
c3RvbVBhdGhzTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbV2Vic2l0ZURhdGFT
dG9yZUN1c3RvbVBhdGhzTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5Q
dHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVz
ZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQo
KSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgTlNTdHJpbmcgKnRlc3RT
dHJpbmcgPSBAIjxzY3JpcHQ+IFwKKyAgICAgICAgdmFyIHJlcXVlc3QgPSB3aW5kb3cuaW5kZXhl
ZERCLm9wZW4oJ3Rlc3REQicpOyBcCisgICAgICAgIHZhciBkYjsgXAorICAgICAgICByZXF1ZXN0
Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7IFwKKyAgICAgICAgICAgIGRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdDsgXAorICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdl
SGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ2RhdGFiYXNlIGlzIGNyZWF0ZWQnKTsg
XAorICAgICAgICAgICAgZGIub25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KSB7IFwKKyAgICAgICAg
ICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVz
c2FnZSgnZGF0YWJhc2UgaXMgY2xvc2VkJyk7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9
OyBcCisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsgXAorICAg
ICAgICAgICAgaWYgKCFkYikgeyBcCisgICAgICAgICAgICAgICAgZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0OyBcCisgICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMu
dGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ2RhdGFiYXNlIGV4aXN0cycpOyBcCisgICAgICAgICAg
ICB9IFwKKyAgICAgICAgfTsgXAorICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihl
dmVudCkgeyBcCisgICAgICAgICAgICBpZiAoIWRiKSB7IFwKKyAgICAgICAgICAgICAgICB3aW5k
b3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnZGF0YWJh
c2UgZXJyb3I6ICcgKyBldmVudC50YXJnZXQuZXJyb3IubmFtZSArICcgLSAnICsgZXZlbnQudGFy
Z2V0LmVycm9yLm1lc3NhZ2UpOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfTsgXAorICAg
ICAgICA8L3NjcmlwdD4iOworCisgICAgTlNVUkwgKmV4YW1wbGVVUkwgPSBbTlNVUkwgVVJMV2l0
aFN0cmluZzpAImh0dHA6Ly9leGFtcGxlLmNvbS8iXTsKKyAgICBOU1VSTCAqd2ViS2l0VVJMID0g
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl07CisKKyAgICBbd2Vi
VmlldyBsb2FkSFRNTFN0cmluZzp0ZXN0U3RyaW5nIGJhc2VVUkw6ZXhhbXBsZVVSTF07CisgICAg
RVhQRUNUX1dLX1NUUkVRKCJkYXRhYmFzZSBpcyBjcmVhdGVkIiwgZ2V0TmV4dE1lc3NhZ2UoKS5i
b2R5KTsKKworICAgIGF1dG8gZGF0YVN0b3JlID0gd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9u
LndlYnNpdGVEYXRhU3RvcmU7CisgICAgYXV0byBpbmRleGVkREJUeXBlID0gYWRvcHROUyhbW05T
U2V0IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6V0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRh
YmFzZXMsIG5pbF0pOworICAgIFtkYXRhU3RvcmUgX3JlbmFtZU9yaWdpbjpleGFtcGxlVVJMIHRv
OndlYktpdFVSTCBmb3JEYXRhT2ZUeXBlczppbmRleGVkREJUeXBlLmdldCgpIGNvbXBsZXRpb25I
YW5kbGVyOl57CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworICAgIEVYUEVDVF9XS19T
VFJFUSgiZGF0YWJhc2UgaXMgY2xvc2VkIiwgZ2V0TmV4dE1lc3NhZ2UoKS5ib2R5KTsKKyAgICAK
KyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzp0ZXN0U3RyaW5nIGJhc2VVUkw6d2ViS2l0VVJM
XTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImRhdGFiYXNlIGV4aXN0cyIsIGdldE5leHRNZXNzYWdl
KCkuYm9keSk7CisKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzp0ZXN0U3RyaW5nIGJhc2VV
Ukw6ZXhhbXBsZVVSTF07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJkYXRhYmFzZSBpcyBjcmVhdGVk
IiwgZ2V0TmV4dE1lc3NhZ2UoKS5ib2R5KTsKKworICAgIC8vIENsZWFuIHVwIGRlZmF1bHREYXRh
U3RvcmUgYWZ0ZXIgdGVzdC4KKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0
b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRh
VHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRs
ZXI6XigpIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKK30KKwogVEVTVChXZWJLaXQsIFdlYnNpdGVEYXRhU3RvcmVS
ZW5hbWVPcmlnaW4pCiB7CiAgICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldyA9IFtbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdFdLV2ViVmlldy5tbQppbmRleCBjYWI2MGY2MDE0M2M5M2Y3YjMxNzViOGE0NzFhYjI2
ODU3OGI1MmYxLi41ZTA2ZDQ4ODUzNTAyOGVkNmY4MWYzYmJhNWIyNzlmMGQ0ZGNiNTIwIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC0yNTUsNiArMjU1
LDcgQEAgc3RhdGljIE5TU3RyaW5nICpvdmVycmlkZUJ1bmRsZUlkZW50aWZpZXIoaWQsIFNFTCkK
IAogLSAodm9pZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVy
ICopdXNlckNvbnRlbnRDb250cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1Njcmlw
dE1lc3NhZ2UgKiltZXNzYWdlCiB7CisgICAgTlNMb2coQCJzaWh1aWw6IG1lc3NhZ2VbJUBdIiwg
bWVzc2FnZSk7CiAgICAgZGlzcGF0Y2hfYmxvY2tfdCBoYW5kbGVyID0gX21lc3NhZ2VIYW5kbGVy
c1ttZXNzYWdlLmJvZHldOwogICAgIGlmIChoYW5kbGVyKQogICAgICAgICBoYW5kbGVyKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405615</attachid>
            <date>2020-07-30 14:07:00 -0700</date>
            <delta_ts>2020-07-30 14:44:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214905-20200730140700.patch</filename>
            <type>text/plain</type>
            <size>15977</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjllMDdhODdkYzQ4YTFm
OGFkMjFiY2QzYTJjOGMyZTUxZDE2ZTUyOC4uNmZhY2RhNTlhYmJkM2FkZWQ4YzY2ODNjNzEzY2Ez
MTNmMzQzYzI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA3LTMwICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgLVtXS1dlYnNpdGVEYXRhU3Rv
cmUgX3JlbmFtZU9yaWdpbjpdIG5lZWRzIHRvIHN1cHBvcnQgSW5kZXhlZERCIHJlbmFtZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDkwNQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNjYyNDc5Nzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVG8gZG8gdGhlIHJlbmFtaW5nLCB3ZSBjbG9zZSBhbGwg
ZXhpc3RpbmcgZGF0YWJhc2VzIHdob3NlIHRvcCBvcmlnaW4gaXMgb2xkIG9yaWdpbiwgYW5kIG1v
dmUgYWxsIGZpbGVzIGluIAorICAgICAgICBkaXJlY3Rvcnkgb2Ygb2xkIG9yaWdpbiB0byB0aGF0
IG9mIG5ldyBvcmlnaW4uCisKKyAgICAgICAgQVBJIHRlc3Q6IFdlYktpdC5XZWJzaXRlRGF0YVN0
b3JlUmVuYW1lT3JpZ2luRm9ySW5kZXhlZERhdGFiYXNlCisKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6SURCU2VydmVyOjpjbG9zZURhdGFiYXNlc0Zvck9yaWdpbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lu
cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6cmVuYW1lT3JpZ2lu
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmg6CisKIDIw
MjAtMDctMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtl
IHN1cmUgcGxheWJhY2sgc3RhdGUgY29uc3RhbnRzIHJlbWFpbiBvbiBPc2NpbGxhdG9yTm9kZSBm
b3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkNzNiZTM2YjM4NGVjYjRlMDJk
MWE5YWM2MDc0MTAwYTY1YzIwMTliLi43YjllZDI0YWZhNThhODJhMTUwN2ZmYzc4NTU2ZDgzMGY5
MWJhZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTA3LTMwICBTaWh1aSBMaXUg
IDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jl
bmFtZU9yaWdpbjpdIG5lZWRzIHRvIHN1cHBvcnQgSW5kZXhlZERCIHJlbmFtZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDkwNQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjYyNDc5Nzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpyZW5hbWVPcmlnaW4pOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpyZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJz
aXRlRGF0YVN0b3JlIF9yZW5hbWVPcmlnaW46dG86Zm9yRGF0YU9mVHlwZXM6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisKIDIwMjAtMDctMjkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIEltcHJvdmUgcmFuZ2UgaWRpb21zIGFuZCBvdGhlciBjaGFuZ2VzIHRvIHByZXBh
cmUgdGhlIHdheSBmb3IgbW9yZSByZWR1Y3Rpb24gaW4gbGl2ZSByYW5nZSB1c2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAK
aW5kZXggMzAyZDFhNzAxMmM0YTlmMGI3MmVkNWIwZjRjNzAxY2VlNDMwMDZlYy4uNTAzMDRiOTZi
M2NkNjhkNTIyODc4YmNhZjIwZWJkZGZlZDZmNjYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTU2MiwyNiAr
NTYyLDM1IEBAIHZvaWQgSURCU2VydmVyOjpjbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVk
U2luY2UoV2FsbFRpbWUgbW9kaWZpY2F0aW9uVGltZSkKICAgICB9CiB9CiAKLXZvaWQgSURCU2Vy
dmVyOjpjbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFNlY3Vy
aXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMpCit2b2lkIElEQlNlcnZlcjo6Y2xvc2VEYXRhYmFzZXNG
b3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiB0YXJnZXRPcmlnaW5z
LCBGdW5jdGlvbjxib29sKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IENsaWVudE9y
aWdpbiYpPiYmIGZpbHRlcikKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBB
U1NFUlQobV9sb2NrLmlzSGVsZCgpKTsKIAogICAgIEhhc2hTZXQ8VW5pcXVlSURCRGF0YWJhc2Uq
PiBvcGVuRGF0YWJhc2VzOwogICAgIGZvciAoYXV0byYgZGF0YWJhc2UgOiBtX3VuaXF1ZUlEQkRh
dGFiYXNlTWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGNvbnN0IGF1dG8mIGlkZW50aWZpZXIgPSBk
YXRhYmFzZS0+aWRlbnRpZmllcigpOwotICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdp
bnMpIHsKLSAgICAgICAgICAgIGlmIChpZGVudGlmaWVyLmlzUmVsYXRlZFRvT3JpZ2luKG9yaWdp
bikpIHsKLSAgICAgICAgICAgICAgICBvcGVuRGF0YWJhc2VzLmFkZChkYXRhYmFzZS5nZXQoKSk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAg
ICAgY29uc3QgYXV0byYgZGF0YWJhc2VPcmlnaW4gPSBkYXRhYmFzZS0+aWRlbnRpZmllcigpLm9y
aWdpbigpOworICAgICAgICBib29sIGZpbHRlcmVkID0gV1RGOjphbnlPZih0YXJnZXRPcmlnaW5z
LCBbJmRhdGFiYXNlT3JpZ2luLCAmZmlsdGVyXShhdXRvJiB0YXJnZXRPcmlnaW4pIHsKKyAgICAg
ICAgICAgIHJldHVybiBmaWx0ZXIodGFyZ2V0T3JpZ2luLCBkYXRhYmFzZU9yaWdpbik7CisgICAg
ICAgIH0pOworICAgICAgICBpZiAoZmlsdGVyZWQpCisgICAgICAgICAgICBvcGVuRGF0YWJhc2Vz
LmFkZChkYXRhYmFzZS5nZXQoKSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6
IG9wZW5EYXRhYmFzZXMpIHsKICAgICAgICAgZGF0YWJhc2UtPmltbWVkaWF0ZUNsb3NlKCk7CiAg
ICAgICAgIG1fdW5pcXVlSURCRGF0YWJhc2VNYXAucmVtb3ZlKGRhdGFiYXNlLT5pZGVudGlmaWVy
KCkpOwogICAgIH0KK30KKwordm9pZCBJREJTZXJ2ZXI6OmNsb3NlQW5kRGVsZXRlRGF0YWJhc2Vz
Rm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucykKK3sK
KyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9sb2NrLmlzSGVsZCgp
KTsKKworICAgIGNsb3NlRGF0YWJhc2VzRm9yT3JpZ2lucyhvcmlnaW5zLCBbXShjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uc3QgQ2xpZW50T3JpZ2luJiBkYXRhYmFzZU9yaWdp
bikgLT4gYm9vbCB7CisgICAgICAgIHJldHVybiBkYXRhYmFzZU9yaWdpbi5pc1JlbGF0ZWQob3Jp
Z2luKTsKKyAgICB9KTsKIAogICAgIGlmICghbV9kYXRhYmFzZURpcmVjdG9yeVBhdGguaXNFbXB0
eSgpKSB7CiAgICAgICAgIHJlbW92ZURhdGFiYXNlc1dpdGhPcmlnaW5zRm9yVmVyc2lvbihvcmln
aW5zLCAidjAiKTsKQEAgLTY5NCw2ICs3MDMsMjUgQEAgdm9pZCBJREJTZXJ2ZXI6OnJlbW92ZURh
dGFiYXNlc1dpdGhPcmlnaW5zRm9yVmVyc2lvbihjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW4K
ICAgICB9CiB9CiAKK3ZvaWQgSURCU2VydmVyOjpyZW5hbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiBvbGRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYgbmV3T3JpZ2luKQoreworICAgIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IHRh
cmdldE9yaWdpbnMgPSB7IG9sZE9yaWdpbiB9OworICAgIGNsb3NlRGF0YWJhc2VzRm9yT3JpZ2lu
cyh0YXJnZXRPcmlnaW5zLCBbXShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHRhcmdldE9yaWdp
biwgY29uc3QgQ2xpZW50T3JpZ2luJiBkYXRhYmFzZU9yaWdpbikgLT4gYm9vbCB7CisgICAgICAg
IHJldHVybiBkYXRhYmFzZU9yaWdpbi50b3BPcmlnaW4gPT0gdGFyZ2V0T3JpZ2luOworICAgIH0p
OworCisgICAgYXV0byByZW5hbWVPcmlnaW5Gb3JWZXJzaW9uID0gWyZdKGNvbnN0IFN0cmluZyYg
dmVyc2lvbikgeworICAgICAgICBhdXRvIHZlcnNpb25QYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aElzb2xhdGVkQ29weSgpLCB2
ZXJzaW9uKTsKKyAgICAgICAgYXV0byBvbGRPcmlnaW5QYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KHZlcnNpb25QYXRoLCBvbGRPcmlnaW4uZGF0YWJhc2VJZGVudGlm
aWVyKCkpOworICAgICAgICBhdXRvIG5ld09yaWdpblBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQodmVyc2lvblBhdGgsIG5ld09yaWdpbi5kYXRhYmFzZUlkZW50aWZp
ZXIoKSk7CisgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9sZE9yaWdpblBhdGgp
KQorICAgICAgICAgICAgRmlsZVN5c3RlbTo6bW92ZUZpbGUob2xkT3JpZ2luUGF0aCwgbmV3T3Jp
Z2luUGF0aCk7CisgICAgfTsKKworICAgIHJlbmFtZU9yaWdpbkZvclZlcnNpb24oInYwIik7Cisg
ICAgcmVuYW1lT3JpZ2luRm9yVmVyc2lvbigidjEiKTsKK30KKwogU3RvcmFnZVF1b3RhTWFuYWdl
cjo6RGVjaXNpb24gSURCU2VydmVyOjpyZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiBv
cmlnaW4sIHVpbnQ2NF90IHRhc2tTaXplKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cnZlci5oCmluZGV4IDc3YjdmNTg0OTI4OGZlMDFkZWI0ZjJiODQ2ZWEzNWFjZjZkNzE2YTcuLmQ4
NWQ4ZWNiMTdiN2IyZWRhYjc3ZWE0NTA1Mzc1OWU3ZTNlNGZlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKQEAgLTEwMyw2
ICsxMDMsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlQW5kRGVs
ZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShXYWxsVGltZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFNlY3Vy
aXR5T3JpZ2luRGF0YT4mKTsKKyAgICB2b2lkIGNsb3NlRGF0YWJhc2VzRm9yT3JpZ2lucyhjb25z
dCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYsIEZ1bmN0aW9uPGJvb2woY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiwgY29uc3QgQ2xpZW50T3JpZ2luJik+JiYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVuYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYs
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpOwogCiAgICAgU3RvcmFnZVF1b3Rh
TWFuYWdlcjo6RGVjaXNpb24gcmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2
NF90IHRhc2tTaXplKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdWludDY0X3QgZGlza1Vz
YWdlKGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSwgY29uc3QgQ2xpZW50T3JpZ2luJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJT
ZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURC
U2VydmVyLmNwcAppbmRleCA5ODkxMWY1MjRmZmZjMmI2MjVlZjIxYjA5YmI3MTNjMGY5MGIxY2E1
Li4wNDgwN2QwYzg4ZDdjY2U3NDhiZjJkM2M2ZjI1ZjA3MTY3MmQxYmE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5j
cHAKQEAgLTg5LDYgKzg5LDIxIEBAIHZvaWQgV2ViSURCU2VydmVyOjpjbG9zZUFuZERlbGV0ZURh
dGFiYXNlc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyCiAgICAgfSk7CiB9
CiAKK3ZvaWQgV2ViSURCU2VydmVyOjpyZW5hbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBvbGRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYgbmV3T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCit7Cisg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG9sZE9yaWdpbiA9IG9sZE9yaWdpbi5pc29sYXRl
ZENvcHkoKSwgbmV3T3JpZ2luID0gbmV3T3JpZ2luLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CisKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2so
KSk7CisgICAgICAgIG1fc2VydmVyLT5yZW5hbWVPcmlnaW4ob2xkT3JpZ2luLCBuZXdPcmlnaW4p
OworICAgICAgICBwb3N0VGFza1JlcGx5KENyb3NzVGhyZWFkVGFzayhbY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAg
ICAgIH0pKTsKKyAgICB9KTsKK30KKwogdm9pZCBXZWJJREJTZXJ2ZXI6OnN1c3BlbmQoU2hvdWxk
Rm9yY2VTdG9wIHNob3VsZEZvcmNlU3RvcCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIv
V2ViSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9X
ZWJJREJTZXJ2ZXIuaAppbmRleCAxNjE1MTU1NGQ5MTIzM2VlNjU3ZGZhNmU4Mzc5N2JkNGI2ODVj
OTFiLi45NjdhOTdjMmJlNzIzOGMyMDc3ODRhNTdkMzUyNDY2NDVmZDlmNmZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIu
aApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsb3NlQW5kRGVsZXRlRGF0
YWJhc2VzTW9kaWZpZWRTaW5jZShXYWxsVGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNhbGxiYWNrKTsKICAgICB2b2lkIGNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyhj
b25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCByZW5hbWVPcmlnaW4oY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIGVudW0gY2xhc3MgU2hv
dWxkRm9yY2VTdG9wIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICB2b2lkIHN1c3BlbmQoU2hvdWxk
Rm9yY2VTdG9wKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKaW5kZXggZWJiNDE4NzQ4MTRkOGFmNmFhZWQ2ODk5ZGMzNTkxZGRkYmYwODFlMi4u
YjllYjdiOTZiZGNiNTIwMzEwMzgyMmMwY2Y1ZGRkZmQxNDdjYmZiNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTI1NTEsMTEgKzI1
NTEsMjQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzZXRRdW90YShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJl
bmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBV
UkwmIG9sZE5hbWUsIGNvbnN0IFVSTCYgbmV3TmFtZSwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4gZGF0YVR5cGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgYXV0byBhZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGF1dG8gb2xkT3JpZ2luID0gV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKG9sZE5hbWUpOworICAgIGF1dG8gbmV3T3Jp
Z2luID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKG5ld05hbWUpOworCisg
ICAgaWYgKG9sZE9yaWdpbi5pc0VtcHR5KCkgfHwgbmV3T3JpZ2luLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OkxvY2FsU3RvcmFnZSkpIHsKICAgICAgICAgaWYgKG1fc3RvcmFnZU1hbmFnZXJTZXQtPmNvbnRh
aW5zKHNlc3Npb25JRCkpCiAgICAgICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5yZW5hbWVP
cmlnaW4oc2Vzc2lvbklELCBvbGROYW1lLCBuZXdOYW1lLCBbYWdncmVnYXRvcl0geyB9KTsKICAg
ICB9CisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICBpZiAoZGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkgeworICAgICAgICBh
dXRvIHBhdGggPSBtX2lkYkRhdGFiYXNlUGF0aHMuZ2V0KHNlc3Npb25JRCk7CisgICAgICAgIGlm
ICghcGF0aC5pc0VtcHR5KCkpCisgICAgICAgICAgICB3ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5y
ZW5hbWVPcmlnaW4ob2xkT3JpZ2luLCBuZXdPcmlnaW4sIFthZ2dyZWdhdG9yXSB7IH0pOworICAg
IH0KKyNlbmRpZgogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0K
aW5kZXggMmI1YmVhNWExYTIyODBkYzgxMDg2M2Y0OWNjOThmYTNkYTQ2OWUwZC4uYmFiY2RlYzcy
ODMxMDYwZDU3MDQxMTgwZmJmZDY4YTlmODgxMjY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC02MDgs
OCArNjA4LDE2IEBAIHN0YXRpYyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZD4gdG9X
ZWJzaXRlRGF0YVJlY29yZHMoTlNBcnJheSAqZGF0YVJlY29yCiAgICAgaWYgKCFkYXRhVHlwZXMu
Y291bnQpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigpOwogCi0gICAgaWYgKGRh
dGFUeXBlcy5jb3VudCA+IDEgfHwgIVtkYXRhVHlwZXMgY29udGFpbnNPYmplY3Q6V0tXZWJzaXRl
RGF0YVR5cGVMb2NhbFN0b3JhZ2VdKQotICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZh
bGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiX3JlbmFtZU9yaWdpbiBjYW4gb25seSBiZSBj
YWxsZWQgd2l0aCBXS1dlYnNpdGVEYXRhVHlwZUxvY2FsU3RvcmFnZSByaWdodCBub3cuIl07Cisg
ICAgYXV0byBmaWx0ZXJlZFR5cGVzID0gW2RhdGFUeXBlcyBvYmplY3RzUGFzc2luZ1Rlc3Q6XkJP
T0woaWQgb2JqLCBCT09MICpzdG9wKSB7CisgICAgICAgIE5TU3RyaW5nICp0eXBlID0gKE5TU3Ry
aW5nICopb2JqOworICAgICAgICBOU1NldCAqc3VwcG9ydGVkVHlwZXMgPSBbTlNTZXQgc2V0V2l0
aE9iamVjdHM6V0tXZWJzaXRlRGF0YVR5cGVMb2NhbFN0b3JhZ2UsIFdLV2Vic2l0ZURhdGFUeXBl
SW5kZXhlZERCRGF0YWJhc2VzLCBuaWxdOworICAgICAgICByZXR1cm4gIVtzdXBwb3J0ZWRUeXBl
cyBjb250YWluc09iamVjdDp0eXBlXTsKKyAgICB9XTsKKyAgICBpZiAoZmlsdGVyZWRUeXBlcy5j
b3VudCkgeworICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNl
cHRpb24gZm9ybWF0OkAiX3JlbmFtZU9yaWdpbiBjYW4gb25seSBiZSBjYWxsZWQgd2l0aCBXS1dl
YnNpdGVEYXRhVHlwZUxvY2FsU3RvcmFnZSBhbmQgV0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJE
YXRhYmFzZXMgcmlnaHQgbm93LiJdOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
IH0KKwogICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5yZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKG9s
ZE5hbWUsIG5ld05hbWUsIFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyksIFtj
b21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIHsKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkZWZlYjBhMmIwYzVkYzFmYTg2M2U5NjI1
OGE2NGQyOTQzMzliOGNmLi5iNWVhYjlmZWMzNjkwYmRlOWQwYmFjYWU1ZjgxY2JiY2U0NTgzMDIw
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMjAtMDctMzAgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBlLmNvbT4K
KworICAgICAgICAtW1dLV2Vic2l0ZURhdGFTdG9yZSBfcmVuYW1lT3JpZ2luOl0gbmVlZHMgdG8g
c3VwcG9ydCBJbmRleGVkREIgcmVuYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE0OTA1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NjI0Nzk3
OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhz
Lm1tOgorICAgICAgICAoVEVTVCk6CisKIDIwMjAtMDctMjkgIEpvbmF0aGFuIEJlZGFyZCAgPGpi
ZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFt3ZWJraXRjb3JlcHldIEFkZCBhbiBhdXRvLWlu
c3RhbGxlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQppbmRleCBkZDlm
MzI2Y2RiMDM4NTdkZTIwODkyNTgwMDJhMWMzNDQ1OWJjMzY4Li41ZWRiOTExOTI2OTM3MjQxZWM4
ZWU5OWE2YjlmMzQ3ZWI0ZTAwOTBkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21Q
YXRocy5tbQpAQCAtNTQ4LDYgKzU0OCw3MiBAQCBURVNUKFdlYktpdCwgV2Vic2l0ZURhdGFTdG9y
ZUlmRXhpc3RzKQogICAgIEVYUEVDVF9UUlVFKGRhdGFTdG9yZS5fY29uZmlndXJhdGlvbi5wZXJz
aXN0ZW50KTsKIH0KIAorVEVTVChXZWJLaXQsIFdlYnNpdGVEYXRhU3RvcmVSZW5hbWVPcmlnaW5G
b3JJbmRleGVkRGF0YWJhc2UpCit7CisgICAgLy8gUmVzZXQgZGVmYXVsdERhdGFTdG9yZSBiZWZv
cmUgdGVzdC4KKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFtbV0tXZWJzaXRl
RGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVE
YXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3Rh
bnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBm
YWxzZTsKKworICAgIFJldGFpblB0cjxXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHNNZXNzYWdl
SGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHNN
ZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25m
aWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9s
bGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFu
ZGxlciJdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBOU1N0cmluZyAqdGVzdFN0cmluZyA9IEAiPHNjcmlw
dD4gXAorICAgICAgICB2YXIgcmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigndGVzdERC
Jyk7IFwKKyAgICAgICAgdmFyIGRiOyBcCisgICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVk
ID0gZnVuY3Rpb24oZXZlbnQpIHsgXAorICAgICAgICAgICAgZGIgPSBldmVudC50YXJnZXQucmVz
dWx0OyBcCisgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFu
ZGxlci5wb3N0TWVzc2FnZSgnZGF0YWJhc2UgaXMgY3JlYXRlZCcpOyBcCisgICAgICAgICAgICBk
Yi5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpIHsgXAorICAgICAgICAgICAgICAgIHdpbmRvdy53
ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdkYXRhYmFzZSBp
cyBjbG9zZWQnKTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH07IFwKKyAgICAgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeyBcCisgICAgICAgICAgICBpZiAoIWRi
KSB7IFwKKyAgICAgICAgICAgICAgICBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7IFwKKyAgICAg
ICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0
TWVzc2FnZSgnZGF0YWJhc2UgZXhpc3RzJyk7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9
OyBcCisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7IFwKKyAgICAg
ICAgICAgIGlmICghZGIpIHsgXAorICAgICAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2Fn
ZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdkYXRhYmFzZSBlcnJvcjogJyArIGV2
ZW50LnRhcmdldC5lcnJvci5uYW1lICsgJyAtICcgKyBldmVudC50YXJnZXQuZXJyb3IubWVzc2Fn
ZSk7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9OyBcCisgICAgICAgIDwvc2NyaXB0PiI7
CisKKyAgICBOU1VSTCAqZXhhbXBsZVVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDov
L2V4YW1wbGUuY29tLyJdOworICAgIE5TVVJMICp3ZWJLaXRVUkwgPSBbTlNVUkwgVVJMV2l0aFN0
cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXTsKKworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3Ry
aW5nOnRlc3RTdHJpbmcgYmFzZVVSTDpleGFtcGxlVVJMXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
ImRhdGFiYXNlIGlzIGNyZWF0ZWQiLCBnZXROZXh0TWVzc2FnZSgpLmJvZHkpOworCisgICAgYXV0
byBkYXRhU3RvcmUgPSB3ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9y
ZTsKKyAgICBhdXRvIGluZGV4ZWREQlR5cGUgPSBhZG9wdE5TKFtbTlNTZXQgYWxsb2NdIGluaXRX
aXRoT2JqZWN0czpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcywgbmlsXSk7Cisg
ICAgW2RhdGFTdG9yZSBfcmVuYW1lT3JpZ2luOmV4YW1wbGVVUkwgdG86d2ViS2l0VVJMIGZvckRh
dGFPZlR5cGVzOmluZGV4ZWREQlR5cGUuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XnsKKyAgICAg
ICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lKTsKKyAgICBkb25lID0gZmFsc2U7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJkYXRhYmFzZSBp
cyBjbG9zZWQiLCBnZXROZXh0TWVzc2FnZSgpLmJvZHkpOworICAgIAorICAgIFt3ZWJWaWV3IGxv
YWRIVE1MU3RyaW5nOnRlc3RTdHJpbmcgYmFzZVVSTDp3ZWJLaXRVUkxdOworICAgIEVYUEVDVF9X
S19TVFJFUSgiZGF0YWJhc2UgZXhpc3RzIiwgZ2V0TmV4dE1lc3NhZ2UoKS5ib2R5KTsKKworICAg
IFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOnRlc3RTdHJpbmcgYmFzZVVSTDpleGFtcGxlVVJMXTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoImRhdGFiYXNlIGlzIGNyZWF0ZWQiLCBnZXROZXh0TWVzc2Fn
ZSgpLmJvZHkpOworCisgICAgLy8gQ2xlYW4gdXAgZGVmYXVsdERhdGFTdG9yZSBhZnRlciB0ZXN0
LgorICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFP
ZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRT
aW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRv
bmUpOworfQorCiBURVNUKFdlYktpdCwgV2Vic2l0ZURhdGFTdG9yZVJlbmFtZU9yaWdpbikKIHsK
ICAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3ID0gW1tbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dF0gYXV0b3JlbGVhc2VdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405623</attachid>
            <date>2020-07-30 14:44:33 -0700</date>
            <delta_ts>2020-07-31 10:07:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214905-20200730144432.patch</filename>
            <type>text/plain</type>
            <size>15765</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjllMDdhODdkYzQ4YTFm
OGFkMjFiY2QzYTJjOGMyZTUxZDE2ZTUyOC4uNmZhY2RhNTlhYmJkM2FkZWQ4YzY2ODNjNzEzY2Ez
MTNmMzQzYzI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA3LTMwICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgLVtXS1dlYnNpdGVEYXRhU3Rv
cmUgX3JlbmFtZU9yaWdpbjpdIG5lZWRzIHRvIHN1cHBvcnQgSW5kZXhlZERCIHJlbmFtZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDkwNQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNjYyNDc5Nzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVG8gZG8gdGhlIHJlbmFtaW5nLCB3ZSBjbG9zZSBhbGwg
ZXhpc3RpbmcgZGF0YWJhc2VzIHdob3NlIHRvcCBvcmlnaW4gaXMgb2xkIG9yaWdpbiwgYW5kIG1v
dmUgYWxsIGZpbGVzIGluIAorICAgICAgICBkaXJlY3Rvcnkgb2Ygb2xkIG9yaWdpbiB0byB0aGF0
IG9mIG5ldyBvcmlnaW4uCisKKyAgICAgICAgQVBJIHRlc3Q6IFdlYktpdC5XZWJzaXRlRGF0YVN0
b3JlUmVuYW1lT3JpZ2luRm9ySW5kZXhlZERhdGFiYXNlCisKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6SURCU2VydmVyOjpjbG9zZURhdGFiYXNlc0Zvck9yaWdpbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lu
cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6cmVuYW1lT3JpZ2lu
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmg6CisKIDIw
MjAtMDctMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtl
IHN1cmUgcGxheWJhY2sgc3RhdGUgY29uc3RhbnRzIHJlbWFpbiBvbiBPc2NpbGxhdG9yTm9kZSBm
b3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkNzNiZTM2YjM4NGVjYjRlMDJk
MWE5YWM2MDc0MTAwYTY1YzIwMTliLi43YjllZDI0YWZhNThhODJhMTUwN2ZmYzc4NTU2ZDgzMGY5
MWJhZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTA3LTMwICBTaWh1aSBMaXUg
IDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jl
bmFtZU9yaWdpbjpdIG5lZWRzIHRvIHN1cHBvcnQgSW5kZXhlZERCIHJlbmFtZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDkwNQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjYyNDc5Nzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpyZW5hbWVPcmlnaW4pOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpyZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJz
aXRlRGF0YVN0b3JlIF9yZW5hbWVPcmlnaW46dG86Zm9yRGF0YU9mVHlwZXM6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisKIDIwMjAtMDctMjkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIEltcHJvdmUgcmFuZ2UgaWRpb21zIGFuZCBvdGhlciBjaGFuZ2VzIHRvIHByZXBh
cmUgdGhlIHdheSBmb3IgbW9yZSByZWR1Y3Rpb24gaW4gbGl2ZSByYW5nZSB1c2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAK
aW5kZXggMzAyZDFhNzAxMmM0YTlmMGI3MmVkNWIwZjRjNzAxY2VlNDMwMDZlYy4uNTAzMDRiOTZi
M2NkNjhkNTIyODc4YmNhZjIwZWJkZGZlZDZmNjYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTU2MiwyNiAr
NTYyLDM1IEBAIHZvaWQgSURCU2VydmVyOjpjbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVk
U2luY2UoV2FsbFRpbWUgbW9kaWZpY2F0aW9uVGltZSkKICAgICB9CiB9CiAKLXZvaWQgSURCU2Vy
dmVyOjpjbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFNlY3Vy
aXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMpCit2b2lkIElEQlNlcnZlcjo6Y2xvc2VEYXRhYmFzZXNG
b3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiB0YXJnZXRPcmlnaW5z
LCBGdW5jdGlvbjxib29sKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IENsaWVudE9y
aWdpbiYpPiYmIGZpbHRlcikKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBB
U1NFUlQobV9sb2NrLmlzSGVsZCgpKTsKIAogICAgIEhhc2hTZXQ8VW5pcXVlSURCRGF0YWJhc2Uq
PiBvcGVuRGF0YWJhc2VzOwogICAgIGZvciAoYXV0byYgZGF0YWJhc2UgOiBtX3VuaXF1ZUlEQkRh
dGFiYXNlTWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGNvbnN0IGF1dG8mIGlkZW50aWZpZXIgPSBk
YXRhYmFzZS0+aWRlbnRpZmllcigpOwotICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdp
bnMpIHsKLSAgICAgICAgICAgIGlmIChpZGVudGlmaWVyLmlzUmVsYXRlZFRvT3JpZ2luKG9yaWdp
bikpIHsKLSAgICAgICAgICAgICAgICBvcGVuRGF0YWJhc2VzLmFkZChkYXRhYmFzZS5nZXQoKSk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAg
ICAgY29uc3QgYXV0byYgZGF0YWJhc2VPcmlnaW4gPSBkYXRhYmFzZS0+aWRlbnRpZmllcigpLm9y
aWdpbigpOworICAgICAgICBib29sIGZpbHRlcmVkID0gV1RGOjphbnlPZih0YXJnZXRPcmlnaW5z
LCBbJmRhdGFiYXNlT3JpZ2luLCAmZmlsdGVyXShhdXRvJiB0YXJnZXRPcmlnaW4pIHsKKyAgICAg
ICAgICAgIHJldHVybiBmaWx0ZXIodGFyZ2V0T3JpZ2luLCBkYXRhYmFzZU9yaWdpbik7CisgICAg
ICAgIH0pOworICAgICAgICBpZiAoZmlsdGVyZWQpCisgICAgICAgICAgICBvcGVuRGF0YWJhc2Vz
LmFkZChkYXRhYmFzZS5nZXQoKSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6
IG9wZW5EYXRhYmFzZXMpIHsKICAgICAgICAgZGF0YWJhc2UtPmltbWVkaWF0ZUNsb3NlKCk7CiAg
ICAgICAgIG1fdW5pcXVlSURCRGF0YWJhc2VNYXAucmVtb3ZlKGRhdGFiYXNlLT5pZGVudGlmaWVy
KCkpOwogICAgIH0KK30KKwordm9pZCBJREJTZXJ2ZXI6OmNsb3NlQW5kRGVsZXRlRGF0YWJhc2Vz
Rm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucykKK3sK
KyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9sb2NrLmlzSGVsZCgp
KTsKKworICAgIGNsb3NlRGF0YWJhc2VzRm9yT3JpZ2lucyhvcmlnaW5zLCBbXShjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uc3QgQ2xpZW50T3JpZ2luJiBkYXRhYmFzZU9yaWdp
bikgLT4gYm9vbCB7CisgICAgICAgIHJldHVybiBkYXRhYmFzZU9yaWdpbi5pc1JlbGF0ZWQob3Jp
Z2luKTsKKyAgICB9KTsKIAogICAgIGlmICghbV9kYXRhYmFzZURpcmVjdG9yeVBhdGguaXNFbXB0
eSgpKSB7CiAgICAgICAgIHJlbW92ZURhdGFiYXNlc1dpdGhPcmlnaW5zRm9yVmVyc2lvbihvcmln
aW5zLCAidjAiKTsKQEAgLTY5NCw2ICs3MDMsMjUgQEAgdm9pZCBJREJTZXJ2ZXI6OnJlbW92ZURh
dGFiYXNlc1dpdGhPcmlnaW5zRm9yVmVyc2lvbihjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW4K
ICAgICB9CiB9CiAKK3ZvaWQgSURCU2VydmVyOjpyZW5hbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiBvbGRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYgbmV3T3JpZ2luKQoreworICAgIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IHRh
cmdldE9yaWdpbnMgPSB7IG9sZE9yaWdpbiB9OworICAgIGNsb3NlRGF0YWJhc2VzRm9yT3JpZ2lu
cyh0YXJnZXRPcmlnaW5zLCBbXShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHRhcmdldE9yaWdp
biwgY29uc3QgQ2xpZW50T3JpZ2luJiBkYXRhYmFzZU9yaWdpbikgLT4gYm9vbCB7CisgICAgICAg
IHJldHVybiBkYXRhYmFzZU9yaWdpbi50b3BPcmlnaW4gPT0gdGFyZ2V0T3JpZ2luOworICAgIH0p
OworCisgICAgYXV0byByZW5hbWVPcmlnaW5Gb3JWZXJzaW9uID0gWyZdKGNvbnN0IFN0cmluZyYg
dmVyc2lvbikgeworICAgICAgICBhdXRvIHZlcnNpb25QYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aElzb2xhdGVkQ29weSgpLCB2
ZXJzaW9uKTsKKyAgICAgICAgYXV0byBvbGRPcmlnaW5QYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KHZlcnNpb25QYXRoLCBvbGRPcmlnaW4uZGF0YWJhc2VJZGVudGlm
aWVyKCkpOworICAgICAgICBhdXRvIG5ld09yaWdpblBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQodmVyc2lvblBhdGgsIG5ld09yaWdpbi5kYXRhYmFzZUlkZW50aWZp
ZXIoKSk7CisgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9sZE9yaWdpblBhdGgp
KQorICAgICAgICAgICAgRmlsZVN5c3RlbTo6bW92ZUZpbGUob2xkT3JpZ2luUGF0aCwgbmV3T3Jp
Z2luUGF0aCk7CisgICAgfTsKKworICAgIHJlbmFtZU9yaWdpbkZvclZlcnNpb24oInYwIik7Cisg
ICAgcmVuYW1lT3JpZ2luRm9yVmVyc2lvbigidjEiKTsKK30KKwogU3RvcmFnZVF1b3RhTWFuYWdl
cjo6RGVjaXNpb24gSURCU2VydmVyOjpyZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiBv
cmlnaW4sIHVpbnQ2NF90IHRhc2tTaXplKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cnZlci5oCmluZGV4IDc3YjdmNTg0OTI4OGZlMDFkZWI0ZjJiODQ2ZWEzNWFjZjZkNzE2YTcuLmQ4
NWQ4ZWNiMTdiN2IyZWRhYjc3ZWE0NTA1Mzc1OWU3ZTNlNGZlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKQEAgLTEwMyw2
ICsxMDMsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlQW5kRGVs
ZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShXYWxsVGltZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFNlY3Vy
aXR5T3JpZ2luRGF0YT4mKTsKKyAgICB2b2lkIGNsb3NlRGF0YWJhc2VzRm9yT3JpZ2lucyhjb25z
dCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYsIEZ1bmN0aW9uPGJvb2woY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiwgY29uc3QgQ2xpZW50T3JpZ2luJik+JiYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVuYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYs
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpOwogCiAgICAgU3RvcmFnZVF1b3Rh
TWFuYWdlcjo6RGVjaXNpb24gcmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2
NF90IHRhc2tTaXplKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdWludDY0X3QgZGlza1Vz
YWdlKGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSwgY29uc3QgQ2xpZW50T3JpZ2luJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJT
ZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURC
U2VydmVyLmNwcAppbmRleCA5ODkxMWY1MjRmZmZjMmI2MjVlZjIxYjA5YmI3MTNjMGY5MGIxY2E1
Li4wNDgwN2QwYzg4ZDdjY2U3NDhiZjJkM2M2ZjI1ZjA3MTY3MmQxYmE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5j
cHAKQEAgLTg5LDYgKzg5LDIxIEBAIHZvaWQgV2ViSURCU2VydmVyOjpjbG9zZUFuZERlbGV0ZURh
dGFiYXNlc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyCiAgICAgfSk7CiB9
CiAKK3ZvaWQgV2ViSURCU2VydmVyOjpyZW5hbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBvbGRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYgbmV3T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCit7Cisg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG9sZE9yaWdpbiA9IG9sZE9yaWdpbi5pc29sYXRl
ZENvcHkoKSwgbmV3T3JpZ2luID0gbmV3T3JpZ2luLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CisKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2so
KSk7CisgICAgICAgIG1fc2VydmVyLT5yZW5hbWVPcmlnaW4ob2xkT3JpZ2luLCBuZXdPcmlnaW4p
OworICAgICAgICBwb3N0VGFza1JlcGx5KENyb3NzVGhyZWFkVGFzayhbY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAg
ICAgIH0pKTsKKyAgICB9KTsKK30KKwogdm9pZCBXZWJJREJTZXJ2ZXI6OnN1c3BlbmQoU2hvdWxk
Rm9yY2VTdG9wIHNob3VsZEZvcmNlU3RvcCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIv
V2ViSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9X
ZWJJREJTZXJ2ZXIuaAppbmRleCAxNjE1MTU1NGQ5MTIzM2VlNjU3ZGZhNmU4Mzc5N2JkNGI2ODVj
OTFiLi45NjdhOTdjMmJlNzIzOGMyMDc3ODRhNTdkMzUyNDY2NDVmZDlmNmZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIu
aApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsb3NlQW5kRGVsZXRlRGF0
YWJhc2VzTW9kaWZpZWRTaW5jZShXYWxsVGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNhbGxiYWNrKTsKICAgICB2b2lkIGNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyhj
b25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCByZW5hbWVPcmlnaW4oY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIGVudW0gY2xhc3MgU2hv
dWxkRm9yY2VTdG9wIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICB2b2lkIHN1c3BlbmQoU2hvdWxk
Rm9yY2VTdG9wKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKaW5kZXggZWJiNDE4NzQ4MTRkOGFmNmFhZWQ2ODk5ZGMzNTkxZGRkYmYwODFlMi4u
YjllYjdiOTZiZGNiNTIwMzEwMzgyMmMwY2Y1ZGRkZmQxNDdjYmZiNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTI1NTEsMTEgKzI1
NTEsMjQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzZXRRdW90YShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJl
bmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBV
UkwmIG9sZE5hbWUsIGNvbnN0IFVSTCYgbmV3TmFtZSwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4gZGF0YVR5cGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgYXV0byBhZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGF1dG8gb2xkT3JpZ2luID0gV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKG9sZE5hbWUpOworICAgIGF1dG8gbmV3T3Jp
Z2luID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKG5ld05hbWUpOworCisg
ICAgaWYgKG9sZE9yaWdpbi5pc0VtcHR5KCkgfHwgbmV3T3JpZ2luLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OkxvY2FsU3RvcmFnZSkpIHsKICAgICAgICAgaWYgKG1fc3RvcmFnZU1hbmFnZXJTZXQtPmNvbnRh
aW5zKHNlc3Npb25JRCkpCiAgICAgICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5yZW5hbWVP
cmlnaW4oc2Vzc2lvbklELCBvbGROYW1lLCBuZXdOYW1lLCBbYWdncmVnYXRvcl0geyB9KTsKICAg
ICB9CisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICBpZiAoZGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkgeworICAgICAgICBh
dXRvIHBhdGggPSBtX2lkYkRhdGFiYXNlUGF0aHMuZ2V0KHNlc3Npb25JRCk7CisgICAgICAgIGlm
ICghcGF0aC5pc0VtcHR5KCkpCisgICAgICAgICAgICB3ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5y
ZW5hbWVPcmlnaW4ob2xkT3JpZ2luLCBuZXdPcmlnaW4sIFthZ2dyZWdhdG9yXSB7IH0pOworICAg
IH0KKyNlbmRpZgogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0K
aW5kZXggMmI1YmVhNWExYTIyODBkYzgxMDg2M2Y0OWNjOThmYTNkYTQ2OWUwZC4uMmMxMzU2ZTA4
YTVlNzY5MGJkYTg2MmU3NTY2ZTFiMTEzMzk2NjViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC02MDgs
OCArNjA4LDEwIEBAIHN0YXRpYyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZD4gdG9X
ZWJzaXRlRGF0YVJlY29yZHMoTlNBcnJheSAqZGF0YVJlY29yCiAgICAgaWYgKCFkYXRhVHlwZXMu
Y291bnQpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigpOwogCi0gICAgaWYgKGRh
dGFUeXBlcy5jb3VudCA+IDEgfHwgIVtkYXRhVHlwZXMgY29udGFpbnNPYmplY3Q6V0tXZWJzaXRl
RGF0YVR5cGVMb2NhbFN0b3JhZ2VdKQotICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZh
bGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiX3JlbmFtZU9yaWdpbiBjYW4gb25seSBiZSBj
YWxsZWQgd2l0aCBXS1dlYnNpdGVEYXRhVHlwZUxvY2FsU3RvcmFnZSByaWdodCBub3cuIl07Cisg
ICAgTlNTZXQgKnN1cHBvcnRlZFR5cGVzID0gW05TU2V0IHNldFdpdGhPYmplY3RzOldLV2Vic2l0
ZURhdGFUeXBlTG9jYWxTdG9yYWdlLCBXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNl
cywgbmlsXTsKKyAgICBpZiAoIVtkYXRhVHlwZXMgaXNTdWJzZXRPZlNldDpzdXBwb3J0ZWRUeXBl
c10pCisgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlv
biBmb3JtYXQ6QCJfcmVuYW1lT3JpZ2luIGNhbiBvbmx5IGJlIGNhbGxlZCB3aXRoIFdLV2Vic2l0
ZURhdGFUeXBlTG9jYWxTdG9yYWdlIGFuZCBXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFi
YXNlcyByaWdodCBub3cuIl07CisKICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+cmVuYW1lT3JpZ2lu
SW5XZWJzaXRlRGF0YShvbGROYW1lLCBuZXdOYW1lLCBXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBl
cyhkYXRhVHlwZXMpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpXSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGVmZWIwYTJi
MGM1ZGMxZmE4NjNlOTYyNThhNjRkMjk0MzM5YjhjZi4uYjVlYWI5ZmVjMzY5MGJkZTlkMGJhY2Fl
NWY4MWNiYmNlNDU4MzAyMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA3LTMwICBTaWh1aSBMaXUgIDxzaWh1
aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3JlbmFtZU9y
aWdpbjpdIG5lZWRzIHRvIHN1cHBvcnQgSW5kZXhlZERCIHJlbmFtZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDkwNQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNjYyNDc5Nzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRh
U3RvcmVDdXN0b21QYXRocy5tbToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIwLTA3LTI5ICBKb25h
dGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbd2Via2l0Y29yZXB5
XSBBZGQgYW4gYXV0by1pbnN0YWxsZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0
aHMubW0KaW5kZXggZGQ5ZjMyNmNkYjAzODU3ZGUyMDg5MjU4MDAyYTFjMzQ0NTliYzM2OC4uNWVk
YjkxMTkyNjkzNzI0MWVjOGVlOTlhNmI5ZjM0N2ViNGUwMDkwZCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0
aHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRl
RGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KQEAgLTU0OCw2ICs1NDgsNzIgQEAgVEVTVChXZWJLaXQs
IFdlYnNpdGVEYXRhU3RvcmVJZkV4aXN0cykKICAgICBFWFBFQ1RfVFJVRShkYXRhU3RvcmUuX2Nv
bmZpZ3VyYXRpb24ucGVyc2lzdGVudCk7CiB9CiAKK1RFU1QoV2ViS2l0LCBXZWJzaXRlRGF0YVN0
b3JlUmVuYW1lT3JpZ2luRm9ySW5kZXhlZERhdGFiYXNlKQoreworICAgIC8vIFJlc2V0IGRlZmF1
bHREYXRhU3RvcmUgYmVmb3JlIHRlc3QuCisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsK
KyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZU
eXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2lu
Y2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAg
ZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25l
KTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICBSZXRhaW5QdHI8V2Vic2l0ZURhdGFTdG9yZUN1
c3RvbVBhdGhzTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbV2Vic2l0ZURhdGFT
dG9yZUN1c3RvbVBhdGhzTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5Q
dHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVz
ZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQo
KSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgTlNTdHJpbmcgKnRlc3RT
dHJpbmcgPSBAIjxzY3JpcHQ+IFwKKyAgICAgICAgdmFyIHJlcXVlc3QgPSB3aW5kb3cuaW5kZXhl
ZERCLm9wZW4oJ3Rlc3REQicpOyBcCisgICAgICAgIHZhciBkYjsgXAorICAgICAgICByZXF1ZXN0
Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7IFwKKyAgICAgICAgICAgIGRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdDsgXAorICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdl
SGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ2RhdGFiYXNlIGlzIGNyZWF0ZWQnKTsg
XAorICAgICAgICAgICAgZGIub25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KSB7IFwKKyAgICAgICAg
ICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVz
c2FnZSgnZGF0YWJhc2UgaXMgY2xvc2VkJyk7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9
OyBcCisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsgXAorICAg
ICAgICAgICAgaWYgKCFkYikgeyBcCisgICAgICAgICAgICAgICAgZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0OyBcCisgICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMu
dGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ2RhdGFiYXNlIGV4aXN0cycpOyBcCisgICAgICAgICAg
ICB9IFwKKyAgICAgICAgfTsgXAorICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihl
dmVudCkgeyBcCisgICAgICAgICAgICBpZiAoIWRiKSB7IFwKKyAgICAgICAgICAgICAgICB3aW5k
b3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnZGF0YWJh
c2UgZXJyb3I6ICcgKyBldmVudC50YXJnZXQuZXJyb3IubmFtZSArICcgLSAnICsgZXZlbnQudGFy
Z2V0LmVycm9yLm1lc3NhZ2UpOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfTsgXAorICAg
ICAgICA8L3NjcmlwdD4iOworCisgICAgTlNVUkwgKmV4YW1wbGVVUkwgPSBbTlNVUkwgVVJMV2l0
aFN0cmluZzpAImh0dHA6Ly9leGFtcGxlLmNvbS8iXTsKKyAgICBOU1VSTCAqd2ViS2l0VVJMID0g
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl07CisKKyAgICBbd2Vi
VmlldyBsb2FkSFRNTFN0cmluZzp0ZXN0U3RyaW5nIGJhc2VVUkw6ZXhhbXBsZVVSTF07CisgICAg
RVhQRUNUX1dLX1NUUkVRKCJkYXRhYmFzZSBpcyBjcmVhdGVkIiwgZ2V0TmV4dE1lc3NhZ2UoKS5i
b2R5KTsKKworICAgIGF1dG8gZGF0YVN0b3JlID0gd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9u
LndlYnNpdGVEYXRhU3RvcmU7CisgICAgYXV0byBpbmRleGVkREJUeXBlID0gYWRvcHROUyhbW05T
U2V0IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6V0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRh
YmFzZXMsIG5pbF0pOworICAgIFtkYXRhU3RvcmUgX3JlbmFtZU9yaWdpbjpleGFtcGxlVVJMIHRv
OndlYktpdFVSTCBmb3JEYXRhT2ZUeXBlczppbmRleGVkREJUeXBlLmdldCgpIGNvbXBsZXRpb25I
YW5kbGVyOl57CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworICAgIEVYUEVDVF9XS19T
VFJFUSgiZGF0YWJhc2UgaXMgY2xvc2VkIiwgZ2V0TmV4dE1lc3NhZ2UoKS5ib2R5KTsKKyAgICAK
KyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzp0ZXN0U3RyaW5nIGJhc2VVUkw6d2ViS2l0VVJM
XTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImRhdGFiYXNlIGV4aXN0cyIsIGdldE5leHRNZXNzYWdl
KCkuYm9keSk7CisKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzp0ZXN0U3RyaW5nIGJhc2VV
Ukw6ZXhhbXBsZVVSTF07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJkYXRhYmFzZSBpcyBjcmVhdGVk
IiwgZ2V0TmV4dE1lc3NhZ2UoKS5ib2R5KTsKKworICAgIC8vIENsZWFuIHVwIGRlZmF1bHREYXRh
U3RvcmUgYWZ0ZXIgdGVzdC4KKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0
b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRh
VHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRs
ZXI6XigpIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKK30KKwogVEVTVChXZWJLaXQsIFdlYnNpdGVEYXRhU3RvcmVS
ZW5hbWVPcmlnaW4pCiB7CiAgICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldyA9IFtbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405702</attachid>
            <date>2020-07-31 10:07:07 -0700</date>
            <delta_ts>2020-07-31 10:44:24 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-214905-20200731100706.patch</filename>
            <type>text/plain</type>
            <size>15525</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMwM2ExZGYyNzcxYWZj
NGZmYTJlYTFmZTIyNTU3YmY0OGE0NDE2Ni4uYTVhZWU5ZDA1ZTgzMTNmYmU2ZjI3NDFmNDUyNWEw
NDcwMGFiOGEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA3LTMwICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgLVtXS1dlYnNpdGVEYXRhU3Rv
cmUgX3JlbmFtZU9yaWdpbjpdIG5lZWRzIHRvIHN1cHBvcnQgSW5kZXhlZERCIHJlbmFtZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDkwNQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNjYyNDc5Nzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxl
eCBDaHJpc3RlbnNlbi4KKworICAgICAgICBUbyBkbyB0aGUgcmVuYW1pbmcsIHdlIGNsb3NlIGFs
bCBleGlzdGluZyBkYXRhYmFzZXMgd2hvc2UgdG9wIG9yaWdpbiBpcyBvbGQgb3JpZ2luLCBhbmQg
bW92ZSBhbGwgZmlsZXMgaW4gCisgICAgICAgIGRpcmVjdG9yeSBvZiBvbGQgb3JpZ2luIHRvIHRo
YXQgb2YgbmV3IG9yaWdpbi4KKworICAgICAgICBBUEkgdGVzdDogV2ViS2l0LldlYnNpdGVEYXRh
U3RvcmVSZW5hbWVPcmlnaW5Gb3JJbmRleGVkRGF0YWJhc2UKKworICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpJREJTZXJ2ZXI6OmNsb3NlRGF0YWJhc2VzRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmln
aW5zKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpyZW5hbWVPcmln
aW4pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaDoKKwog
MjAyMC0wNy0zMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgSXQg
d291bGQgYmUgbmljZSBpZiB0aGUgcHJlZGljYXRlIHRha2luZyBmdW5jdGlvbnMgaW4gUGFyc2lu
Z1V0aWxpdGllcy5oIGRpZG4ndCByZXF1aXJlIHNwZWNpZnlpbmcgdGhlIGNoYXJhY3RlciB0eXBl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDdkY2U1ZWI1M2E3OTIwNzdkNTY3ZDgzZTdjZTdiYjNkMDU4ODZjMjQuLjIx
ZDBlN2E5YTZjOGRiZmMwNWIxMjkyMGRkNjRiNTA5Mjg5MmNkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMjAtMDctMzAgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBlLmNvbT4KKwor
ICAgICAgICAtW1dLV2Vic2l0ZURhdGFTdG9yZSBfcmVuYW1lT3JpZ2luOl0gbmVlZHMgdG8gc3Vw
cG9ydCBJbmRleGVkREIgcmVuYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE0OTA1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NjI0Nzk3OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQlNlcnZlcjo6cmVuYW1lT3JpZ2luKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9J
bmRleGVkREIvV2ViSURCU2VydmVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3Jp
Z2luSW5XZWJzaXRlRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmUubW06CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfcmVuYW1lT3Jp
Z2luOnRvOmZvckRhdGFPZlR5cGVzOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorCiAyMDIwLTA3LTMw
ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQgc2Vjb25kIGF0dGVtcHQgdG8gZml4IENhdGFseXN0IGJ1aWxkIGFmdGVyIHIyNjUwODQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2
ZXIuY3BwCmluZGV4IDMwMmQxYTcwMTJjNGE5ZjBiNzJlZDViMGY0YzcwMWNlZTQzMDA2ZWMuLjhk
MDU1ODM2ZDRhNDJhZDRlZDBlNDlmNjlhNTdiYzc0YzI2NDgyN2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCkBAIC01
NjIsMjYgKzU2MiwzNSBAQCB2b2lkIElEQlNlcnZlcjo6Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNN
b2RpZmllZFNpbmNlKFdhbGxUaW1lIG1vZGlmaWNhdGlvblRpbWUpCiAgICAgfQogfQogCi12b2lk
IElEQlNlcnZlcjo6Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3Rv
cjxTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zKQordm9pZCBJREJTZXJ2ZXI6OmNsb3NlRGF0
YWJhc2VzRm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgdGFyZ2V0
T3JpZ2lucywgRnVuY3Rpb248Ym9vbChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBD
bGllbnRPcmlnaW4mKT4mJiBmaWx0ZXIpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
CiAgICAgQVNTRVJUKG1fbG9jay5pc0hlbGQoKSk7CiAKICAgICBIYXNoU2V0PFVuaXF1ZUlEQkRh
dGFiYXNlKj4gb3BlbkRhdGFiYXNlczsKICAgICBmb3IgKGF1dG8mIGRhdGFiYXNlIDogbV91bmlx
dWVJREJEYXRhYmFzZU1hcC52YWx1ZXMoKSkgewotICAgICAgICBjb25zdCBhdXRvJiBpZGVudGlm
aWVyID0gZGF0YWJhc2UtPmlkZW50aWZpZXIoKTsKLSAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4g
OiBvcmlnaW5zKSB7Ci0gICAgICAgICAgICBpZiAoaWRlbnRpZmllci5pc1JlbGF0ZWRUb09yaWdp
bihvcmlnaW4pKSB7Ci0gICAgICAgICAgICAgICAgb3BlbkRhdGFiYXNlcy5hZGQoZGF0YWJhc2Uu
Z2V0KCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9
CisgICAgICAgIGNvbnN0IGF1dG8mIGRhdGFiYXNlT3JpZ2luID0gZGF0YWJhc2UtPmlkZW50aWZp
ZXIoKS5vcmlnaW4oKTsKKyAgICAgICAgYm9vbCBmaWx0ZXJlZCA9IFdURjo6YW55T2YodGFyZ2V0
T3JpZ2lucywgWyZkYXRhYmFzZU9yaWdpbiwgJmZpbHRlcl0oYXV0byYgdGFyZ2V0T3JpZ2luKSB7
CisgICAgICAgICAgICByZXR1cm4gZmlsdGVyKHRhcmdldE9yaWdpbiwgZGF0YWJhc2VPcmlnaW4p
OworICAgICAgICB9KTsKKyAgICAgICAgaWYgKGZpbHRlcmVkKQorICAgICAgICAgICAgb3BlbkRh
dGFiYXNlcy5hZGQoZGF0YWJhc2UuZ2V0KCkpOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgZGF0
YWJhc2UgOiBvcGVuRGF0YWJhc2VzKSB7CiAgICAgICAgIGRhdGFiYXNlLT5pbW1lZGlhdGVDbG9z
ZSgpOwogICAgICAgICBtX3VuaXF1ZUlEQkRhdGFiYXNlTWFwLnJlbW92ZShkYXRhYmFzZS0+aWRl
bnRpZmllcigpKTsKICAgICB9Cit9CisKK3ZvaWQgSURCU2VydmVyOjpjbG9zZUFuZERlbGV0ZURh
dGFiYXNlc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdp
bnMpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fbG9jay5p
c0hlbGQoKSk7CisKKyAgICBjbG9zZURhdGFiYXNlc0Zvck9yaWdpbnMob3JpZ2lucywgW10oY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGNvbnN0IENsaWVudE9yaWdpbiYgZGF0YWJh
c2VPcmlnaW4pIC0+IGJvb2wgeworICAgICAgICByZXR1cm4gZGF0YWJhc2VPcmlnaW4uaXNSZWxh
dGVkKG9yaWdpbik7CisgICAgfSk7CiAKICAgICBpZiAoIW1fZGF0YWJhc2VEaXJlY3RvcnlQYXRo
LmlzRW1wdHkoKSkgewogICAgICAgICByZW1vdmVEYXRhYmFzZXNXaXRoT3JpZ2luc0ZvclZlcnNp
b24ob3JpZ2lucywgInYwIik7CkBAIC02OTQsNiArNzAzLDIwIEBAIHZvaWQgSURCU2VydmVyOjpy
ZW1vdmVEYXRhYmFzZXNXaXRoT3JpZ2luc0ZvclZlcnNpb24oY29uc3QgVmVjdG9yPFNlY3VyaXR5
T3JpZ2luCiAgICAgfQogfQogCit2b2lkIElEQlNlcnZlcjo6cmVuYW1lT3JpZ2luKGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgb2xkT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmIG5ld09yaWdpbikKK3sKKyAgICBWZWN0b3I8U2VjdXJpdHlPcmlnaW5E
YXRhPiB0YXJnZXRPcmlnaW5zID0geyBvbGRPcmlnaW4gfTsKKyAgICBjbG9zZURhdGFiYXNlc0Zv
ck9yaWdpbnModGFyZ2V0T3JpZ2lucywgW10oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0YXJn
ZXRPcmlnaW4sIGNvbnN0IENsaWVudE9yaWdpbiYgZGF0YWJhc2VPcmlnaW4pIC0+IGJvb2wgewor
ICAgICAgICByZXR1cm4gZGF0YWJhc2VPcmlnaW4udG9wT3JpZ2luID09IHRhcmdldE9yaWdpbjsK
KyAgICB9KTsKKworICAgIGF1dG8gdmVyc2lvblBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoSXNvbGF0ZWRDb3B5KCksICJ2MSIp
OworICAgIGF1dG8gb2xkT3JpZ2luUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudCh2ZXJzaW9uUGF0aCwgb2xkT3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAg
ICBhdXRvIG5ld09yaWdpblBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQodmVyc2lvblBhdGgsIG5ld09yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgaWYg
KEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMob2xkT3JpZ2luUGF0aCkpCisgICAgICAgIEZpbGVTeXN0
ZW06Om1vdmVGaWxlKG9sZE9yaWdpblBhdGgsIG5ld09yaWdpblBhdGgpOworfQorCiBTdG9yYWdl
UXVvdGFNYW5hZ2VyOjpEZWNpc2lvbiBJREJTZXJ2ZXI6OnJlcXVlc3RTcGFjZShjb25zdCBDbGll
bnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3QgdGFza1NpemUpCiB7CiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VydmVyLmgKaW5kZXggNzdiN2Y1ODQ5Mjg4ZmUwMWRlYjRmMmI4NDZlYTM1YWNm
NmQ3MTZhNy4uZDg1ZDhlY2IxN2I3YjJlZGFiNzdlYTQ1MDUzNzU5ZTdlM2U0ZmVjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIu
aApAQCAtMTAzLDYgKzEwMyw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKFdhbGxUaW1lKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyhjb25zdCBW
ZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYpOworICAgIHZvaWQgY2xvc2VEYXRhYmFzZXNGb3JP
cmlnaW5zKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiwgRnVuY3Rpb248Ym9vbChj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBDbGllbnRPcmlnaW4mKT4mJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZW5hbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJik7CiAKICAgICBT
dG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbiByZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3Jp
Z2luJiwgdWludDY0X3QgdGFza1NpemUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB1aW50
NjRfdCBkaXNrVXNhZ2UoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBDbGllbnRP
cmlnaW4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhl
ZERCL1dlYklEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4
ZWREQi9XZWJJREJTZXJ2ZXIuY3BwCmluZGV4IDk4OTExZjUyNGZmZmMyYjYyNWVmMjFiMDliYjcx
M2MwZjkwYjFjYTUuLjI3MGJlN2E1N2U5MzkxODEyNzY4YmY0YWU1ZjkwMTg3MTQ4NzYyMmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNl
cnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2Vi
SURCU2VydmVyLmNwcApAQCAtODksNiArODksMTkgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmNsb3Nl
QW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXIK
ICAgICB9KTsKIH0KIAordm9pZCBXZWJJREJTZXJ2ZXI6OnJlbmFtZU9yaWdpbihjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIG9sZE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBuZXdPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxs
YmFjaykKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgcG9zdFRhc2so
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb2xkT3JpZ2luID0gb2xkT3Jp
Z2luLmlzb2xhdGVkQ29weSgpLCBuZXdPcmlnaW4gPSBuZXdPcmlnaW4uaXNvbGF0ZWRDb3B5KCks
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgeworICAgICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Nl
cnZlci0+bG9jaygpKTsKKyAgICAgICAgbV9zZXJ2ZXItPnJlbmFtZU9yaWdpbihvbGRPcmlnaW4s
IG5ld09yaWdpbik7CisgICAgICAgIHBvc3RUYXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNrKFdURk1v
dmUoY2FsbGJhY2spKSk7CisgICAgfSk7Cit9CisKIHZvaWQgV2ViSURCU2VydmVyOjpzdXNwZW5k
KFNob3VsZEZvcmNlU3RvcCBzaG91bGRGb3JjZVN0b3ApCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5k
ZXhlZERCL1dlYklEQlNlcnZlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRl
eGVkREIvV2ViSURCU2VydmVyLmgKaW5kZXggMTYxNTE1NTRkOTEyMzNlZTY1N2RmYTZlODM3OTdi
ZDRiNjg1YzkxYi4uOTY3YTk3YzJiZTcyMzhjMjA3Nzg0YTU3ZDM1MjQ2NjQ1ZmQ5ZjZmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2Vy
dmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURC
U2VydmVyLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbG9zZUFuZERl
bGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2UoV2FsbFRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjYWxsYmFjayk7CiAgICAgdm9pZCBjbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9y
aWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spOworICAgIHZvaWQgcmVuYW1lT3JpZ2luKGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICBlbnVtIGNs
YXNzIFNob3VsZEZvcmNlU3RvcCA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgdm9pZCBzdXNwZW5k
KFNob3VsZEZvcmNlU3RvcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCmluZGV4IDVmY2FjNzQ3OTA4ZWU3Mjk2ODQxNjFlMDU0ZWNlNGY0N2M1
M2U1MGUuLjc5MDg1N2Q1NzZiMTU0NGYzMmMzMDA1YzhlMzc5YWU5ODNkMzNiYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yNTUx
LDExICsyNTUxLDI0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc2V0UXVvdGEoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpyZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgVVJMJiBvbGROYW1lLCBjb25zdCBVUkwmIG5ld05hbWUsIE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+IGRhdGFUeXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGF1dG8gYWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6
Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBhdXRvIG9sZE9yaWdpbiA9
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTChvbGROYW1lKTsKKyAgICBhdXRv
IG5ld09yaWdpbiA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTChuZXdOYW1l
KTsKKworICAgIGlmIChvbGRPcmlnaW4uaXNFbXB0eSgpIHx8IG5ld09yaWdpbi5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybjsKIAogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURh
dGFUeXBlOjpMb2NhbFN0b3JhZ2UpKSB7CiAgICAgICAgIGlmIChtX3N0b3JhZ2VNYW5hZ2VyU2V0
LT5jb250YWlucyhzZXNzaW9uSUQpKQogICAgICAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+
cmVuYW1lT3JpZ2luKHNlc3Npb25JRCwgb2xkTmFtZSwgbmV3TmFtZSwgW2FnZ3JlZ2F0b3JdIHsg
fSk7CiAgICAgfQorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisgICAgaWYgKGRhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpIHsKKyAg
ICAgICAgYXV0byBwYXRoID0gbV9pZGJEYXRhYmFzZVBhdGhzLmdldChzZXNzaW9uSUQpOworICAg
ICAgICBpZiAoIXBhdGguaXNFbXB0eSgpKQorICAgICAgICAgICAgd2ViSURCU2VydmVyKHNlc3Np
b25JRCkucmVuYW1lT3JpZ2luKG9sZE9yaWdpbiwgbmV3T3JpZ2luLCBbYWdncmVnYXRvcl0geyB9
KTsKKyAgICB9CisjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlLm1tCmluZGV4IDJiNWJlYTVhMWEyMjgwZGM4MTA4NjNmNDljYzk4ZmEzZGE0NjllMGQuLjJj
MTM1NmUwOGE1ZTc2OTBiZGE4NjJlNzU2NmUxYjExMzM5NjY1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpA
QCAtNjA4LDggKzYwOCwxMCBAQCBzdGF0aWMgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNv
cmQ+IHRvV2Vic2l0ZURhdGFSZWNvcmRzKE5TQXJyYXkgKmRhdGFSZWNvcgogICAgIGlmICghZGF0
YVR5cGVzLmNvdW50KQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKIAotICAg
IGlmIChkYXRhVHlwZXMuY291bnQgPiAxIHx8ICFbZGF0YVR5cGVzIGNvbnRhaW5zT2JqZWN0OldL
V2Vic2l0ZURhdGFUeXBlTG9jYWxTdG9yYWdlXSkKLSAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNl
Ok5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIl9yZW5hbWVPcmlnaW4gY2FuIG9u
bHkgYmUgY2FsbGVkIHdpdGggV0tXZWJzaXRlRGF0YVR5cGVMb2NhbFN0b3JhZ2UgcmlnaHQgbm93
LiJdOworICAgIE5TU2V0ICpzdXBwb3J0ZWRUeXBlcyA9IFtOU1NldCBzZXRXaXRoT2JqZWN0czpX
S1dlYnNpdGVEYXRhVHlwZUxvY2FsU3RvcmFnZSwgV0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJE
YXRhYmFzZXMsIG5pbF07CisgICAgaWYgKCFbZGF0YVR5cGVzIGlzU3Vic2V0T2ZTZXQ6c3VwcG9y
dGVkVHlwZXNdKQorICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRF
eGNlcHRpb24gZm9ybWF0OkAiX3JlbmFtZU9yaWdpbiBjYW4gb25seSBiZSBjYWxsZWQgd2l0aCBX
S1dlYnNpdGVEYXRhVHlwZUxvY2FsU3RvcmFnZSBhbmQgV0tXZWJzaXRlRGF0YVR5cGVJbmRleGVk
REJEYXRhYmFzZXMgcmlnaHQgbm93LiJdOworCiAgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnJlbmFt
ZU9yaWdpbkluV2Vic2l0ZURhdGEob2xkTmFtZSwgbmV3TmFtZSwgV2ViS2l0Ojp0b1dlYnNpdGVE
YXRhVHlwZXMoZGF0YVR5cGVzKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNv
bXBsZXRpb25IYW5kbGVyKV0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0p
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGI1
ZWZhZWJlMzM1MDk4NTIwYTJiMTYwNDlmYTE2ZWQzZGI1NzZkOTQuLjgyNDYzZDlmNGIyZmVhODVm
MWE1NDE4ZjFiZTY2ZWVkMWRmYmE0MzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wNy0zMCAgU2lodWkgTGl1
ICA8c2lodWlfbGl1QGFwcGUuY29tPgorCisgICAgICAgIC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9y
ZW5hbWVPcmlnaW46XSBuZWVkcyB0byBzdXBwb3J0IEluZGV4ZWREQiByZW5hbWVzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ5MDUKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzY2MjQ3OTc4PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hy
aXN0ZW5zZW4uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dl
YnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIwLTA3
LTMwICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbd2Vi
a2l0Y29yZXB5XSBBZGQgYW4gYXV0by1pbnN0YWxsZXIgKFVucmV2aWV3ZWQgZm9sbG93LXVwIGZp
eCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vi
c2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KaW5kZXggZGQ5ZjMyNmNk
YjAzODU3ZGUyMDg5MjU4MDAyYTFjMzQ0NTliYzM2OC4uZjVmNzMzZjJlYWMyNTdjZmFhNmEwMzgw
NjYwMzNiODFkMDZlOGI3ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMu
bW0KQEAgLTU0OCw2ICs1NDgsNzIgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVEYXRhU3RvcmVJZkV4
aXN0cykKICAgICBFWFBFQ1RfVFJVRShkYXRhU3RvcmUuX2NvbmZpZ3VyYXRpb24ucGVyc2lzdGVu
dCk7CiB9CiAKK1RFU1QoV2ViS2l0LCBXZWJzaXRlRGF0YVN0b3JlUmVuYW1lT3JpZ2luRm9ySW5k
ZXhlZERhdGFiYXNlKQoreworICAgIC8vIFJlc2V0IGRlZmF1bHREYXRhU3RvcmUgYmVmb3JlIHRl
c3QuCisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBbW1dLV2Vic2l0ZURhdGFT
dG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0
b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFz
dF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7
CisKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBh
dGhzTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3
Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29u
dHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVz
dEhhbmRsZXIiXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgTlNTdHJpbmcgKnRlc3RTdHJpbmcgPSBAIjxz
Y3JpcHQ+IFwKKyAgICAgICAgdmFyIHJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oJ3Rl
c3REQicpOyBcCisgICAgICAgIHZhciBkYjsgXAorICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5l
ZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7IFwKKyAgICAgICAgICAgIGRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdDsgXAorICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVz
dEhhbmRsZXIucG9zdE1lc3NhZ2UoJ2RhdGFiYXNlIGlzIGNyZWF0ZWQnKTsgXAorICAgICAgICAg
ICAgZGIub25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KSB7IFwKKyAgICAgICAgICAgICAgICB3aW5k
b3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnZGF0YWJh
c2UgaXMgY2xvc2VkJyk7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9OyBcCisgICAgICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsgXAorICAgICAgICAgICAgaWYg
KCFkYikgeyBcCisgICAgICAgICAgICAgICAgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OyBcCisg
ICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIu
cG9zdE1lc3NhZ2UoJ2RhdGFiYXNlIGV4aXN0cycpOyBcCisgICAgICAgICAgICB9IFwKKyAgICAg
ICAgfTsgXAorICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeyBcCisg
ICAgICAgICAgICBpZiAoIWRiKSB7IFwKKyAgICAgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1l
c3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnZGF0YWJhc2UgZXJyb3I6ICcg
KyBldmVudC50YXJnZXQuZXJyb3IubmFtZSArICcgLSAnICsgZXZlbnQudGFyZ2V0LmVycm9yLm1l
c3NhZ2UpOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfTsgXAorICAgICAgICA8L3Njcmlw
dD4iOworCisgICAgTlNVUkwgKmV4YW1wbGVVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0
dHA6Ly9leGFtcGxlLmNvbS8iXTsKKyAgICBOU1VSTCAqd2ViS2l0VVJMID0gW05TVVJMIFVSTFdp
dGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl07CisKKyAgICBbd2ViVmlldyBsb2FkSFRN
TFN0cmluZzp0ZXN0U3RyaW5nIGJhc2VVUkw6ZXhhbXBsZVVSTF07CisgICAgRVhQRUNUX1dLX1NU
UkVRKCJkYXRhYmFzZSBpcyBjcmVhdGVkIiwgZ2V0TmV4dE1lc3NhZ2UoKS5ib2R5KTsKKworICAg
IGF1dG8gZGF0YVN0b3JlID0gd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLndlYnNpdGVEYXRh
U3RvcmU7CisgICAgYXV0byBpbmRleGVkREJUeXBlID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBp
bml0V2l0aE9iamVjdHM6V0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMsIG5pbF0p
OworICAgIFtkYXRhU3RvcmUgX3JlbmFtZU9yaWdpbjpleGFtcGxlVVJMIHRvOndlYktpdFVSTCBm
b3JEYXRhT2ZUeXBlczppbmRleGVkREJUeXBlLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl57Cisg
ICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworICAgIEVYUEVDVF9XS19TVFJFUSgiZGF0YWJh
c2UgaXMgY2xvc2VkIiwgZ2V0TmV4dE1lc3NhZ2UoKS5ib2R5KTsKKyAgICAKKyAgICBbd2ViVmll
dyBsb2FkSFRNTFN0cmluZzp0ZXN0U3RyaW5nIGJhc2VVUkw6d2ViS2l0VVJMXTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoImRhdGFiYXNlIGV4aXN0cyIsIGdldE5leHRNZXNzYWdlKCkuYm9keSk7CisK
KyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzp0ZXN0U3RyaW5nIGJhc2VVUkw6ZXhhbXBsZVVS
TF07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJkYXRhYmFzZSBpcyBjcmVhdGVkIiwgZ2V0TmV4dE1l
c3NhZ2UoKS5ib2R5KTsKKworICAgIC8vIENsZWFuIHVwIGRlZmF1bHREYXRhU3RvcmUgYWZ0ZXIg
dGVzdC4KKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVE
YXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlm
aWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAg
ICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lKTsKK30KKwogVEVTVChXZWJLaXQsIFdlYnNpdGVEYXRhU3RvcmVSZW5hbWVPcmlnaW4p
CiB7CiAgICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldyA9IFtbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRdIGF1dG9yZWxlYXNlXTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>