<?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>67443</bug_id>
          
          <creation_ts>2011-09-01 15:01:46 -0700</creation_ts>
          <short_desc>Clean up CachedResource::load()</short_desc>
          <delta_ts>2011-09-28 08:25:31 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>69004</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>460814</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-09-01 15:01:46 -0700</bug_when>
    <thetext>There are several details I&apos;d like to deal with in CachedResource::load():

1. Remove the incremental parameter and CachedResourceRequest::m_incremental.  It&apos;s redundant, since its only purpose is to determine whether we call CachedResource::data() before we&apos;ve received all data, and every CachedResource type that doesn&apos;t want incremental data starts its data() implementation with &quot;if (!allDataReceived) return false&quot;.
2. Add the SecurityCheckPolicy to ResourceLoaderOptions.
3. Set CachedResource::m_options in the load() call rather than via a dedicated setter, as requested in https://bugs.webkit.org/show_bug.cgi?id=66018
4. Merge the two CachedResource::load() functions.

I&apos;m going to try to do this in one patch, but if it looks too complicated to review, I&apos;m happy to split it up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460821</commentid>
    <comment_count>1</comment_count>
      <attachid>106039</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-09-01 15:03:52 -0700</bug_when>
    <thetext>Created attachment 106039
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460869</commentid>
    <comment_count>2</comment_count>
      <attachid>106039</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-01 15:56:05 -0700</bug_when>
    <thetext>Comment on attachment 106039
patch

Attachment 106039 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9578565</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460940</commentid>
    <comment_count>3</comment_count>
      <attachid>106039</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-01 17:15:20 -0700</bug_when>
    <thetext>Comment on attachment 106039
patch

Attachment 106039 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/9586205</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460980</commentid>
    <comment_count>4</comment_count>
      <attachid>106039</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-01 18:13:59 -0700</bug_when>
    <thetext>Comment on attachment 106039
patch

Attachment 106039 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/9586229</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461108</commentid>
    <comment_count>5</comment_count>
      <attachid>106039</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-09-02 02:42:52 -0700</bug_when>
    <thetext>Comment on attachment 106039
patch

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

r=me

&gt; Source/WebCore/ChangeLog:8
&gt; +        Clean up CachedResource::load().
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=67443
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        No new tests, refactor only.

It would be good to give a short overview here how this patch makes the world a better place.

&gt; Source/WebCore/loader/ResourceLoaderOptions.h:60
&gt; +    ResourceLoaderOptions(SendCallbackPolicy sendLoadCallbacksArg, ContentSniffingPolicy sniffContentArg, DataBufferingPolicy shouldBufferDataArg, StoredCredentials allowCredentialsArg, SecurityCheckPolicy securityCheckArg) : sendLoadCallbacks(sendLoadCallbacksArg), sniffContent(sniffContentArg), shouldBufferData(shouldBufferDataArg), allowCredentials(allowCredentialsArg), securityCheck(securityCheckArg) { }

*Arg naming is not necessary, you can do : sendLoadCallbacks(sendLoadCallbacks)

&gt; Source/WebCore/loader/ResourceLoader.cpp:122
&gt; +    FrameLoader* fl = m_frame-&gt;loader();

fl -&gt; frameLoader</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461290</commentid>
    <comment_count>6</comment_count>
      <attachid>106149</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-09-02 10:13:06 -0700</bug_when>
    <thetext>Created attachment 106149
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461361</commentid>
    <comment_count>7</comment_count>
      <attachid>106149</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-02 11:21:12 -0700</bug_when>
    <thetext>Comment on attachment 106149
Patch for landing

Rejecting attachment 106149 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
: Unexpected image mismatch : (5)
  fast/text/atsui-multiple-renderers.html = IMAGE
  fast/text/international/danda-space.html = IMAGE
  fast/text/international/thai-baht-space.html = IMAGE
  fast/text/international/thai-line-breaks.html = IMAGE
  platform/chromium-linux/fast/text/international/complex-joining-using-gpos.html = IMAGE

Regressions: Unexpected image and text mismatch : (2)
  fast/borders/border-image-repeat.html = IMAGE+TEXT
  svg/custom/svg-fonts-word-spacing.html = IMAGE+TEXT



Full output: http://queues.webkit.org/results/9586510</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470905</commentid>
    <comment_count>8</comment_count>
      <attachid>108175</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-09-21 10:23:31 -0700</bug_when>
    <thetext>Created attachment 108175
Fix a couple of failing tests

Two changes from previous version:
1. Call releaseResources() instead of cancel() in ResourceLoader::init().  Since we haven&apos;t called willSendRequest() yet, it&apos;s not really a cancel, and not all clients play nicely with cancel() before willSendRequest().
2. In SubresourceLoader::create(), call DocumentLoader::addSubresourceLoader() after init(), instead of before.  If we fail a security check and exit early, we won&apos;t ever call removeSubresourceLoader(), resulting in load events never firing.

Sorry for the long delay in getting a new patch out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473238</commentid>
    <comment_count>9</comment_count>
      <attachid>108175</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-09-26 11:38:07 -0700</bug_when>
    <thetext>Comment on attachment 108175
Fix a couple of failing tests

r=me, some more motivation in the ChangeLog entry would be nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473319</commentid>
    <comment_count>10</comment_count>
      <attachid>108713</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-09-26 12:57:57 -0700</bug_when>
    <thetext>Created attachment 108713
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473557</commentid>
    <comment_count>11</comment_count>
      <attachid>108713</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-26 17:20:19 -0700</bug_when>
    <thetext>Comment on attachment 108713
Patch for landing

Rejecting attachment 108713 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

Last 500 characters of output:
toinstalled/mechanize/_urllib2_fork.py&quot;, line 332, in _call_chain
    result = func(*args)
  File &quot;/mnt/git/webkit-commit-queue/Tools/Scripts/webkitpy/thirdparty/autoinstalled/mechanize/_urllib2_fork.py&quot;, line 1170, in https_open
    return self.do_open(conn_factory, req)
  File &quot;/mnt/git/webkit-commit-queue/Tools/Scripts/webkitpy/thirdparty/autoinstalled/mechanize/_urllib2_fork.py&quot;, line 1118, in do_open
    raise URLError(err)
urllib2.URLError: &lt;urlopen error [Errno 110] Connection timed out&gt;

Full output: http://queues.webkit.org/results/9883045</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473614</commentid>
    <comment_count>12</comment_count>
      <attachid>108713</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-26 18:28:27 -0700</bug_when>
    <thetext>Comment on attachment 108713
Patch for landing

Clearing flags on attachment: 108713

Committed r96060: &lt;http://trac.webkit.org/changeset/96060&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473615</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-26 18:28:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106039</attachid>
            <date>2011-09-01 15:03:52 -0700</date>
            <delta_ts>2011-09-02 10:13:03 -0700</delta_ts>
            <desc>patch</desc>
            <filename>crload.txt</filename>
            <type>text/plain</type>
            <size>29857</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0MzQ4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDktMDEgIE5hdGUgQ2hh
cGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBDbGVhbiB1cCBDYWNoZWRSZXNv
dXJjZTo6bG9hZCgpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Njc0NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIHJlZmFjdG9yIG9ubHkuCisKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJU
eXBlcy5oOiBNb3ZlIFNlY3VyaXR5Q2hlY2tQb2xpY3kgdG8gUmVzb3VyY2VMb2FkZXJPcHRpb25z
LmguCisgICAgICAgICogbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICog
bG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIv
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDogRW5mb3Jj
ZSBTZWN1cml0eUNoZWNrUG9saWN5IGhlcmUgaW5zdGVhZCBvZiBTdWJyZXNvdXJjZUxvYWRlci4K
KyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmg6IFN0b3JlIFNlY3VyaXR5
Q2hlY2tQb2xpY3kgb24gUmVzb3VyY2VMb2FkZXJPcHRpb25zLgorICAgICAgICAqIGxvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRp
b25zKTogRGVmaW5lIHRoZSBkZWZhdWx0IFJlc291cmNlTG9hZGVyT3B0aW9ucyBmb3IKKyAgICAg
ICAgICAgIENhY2hlZFJlc291cmNlIGxvYWRzIGhlcmUgaW5zdGVhZCBvZiBhcyBhIGRlZmF1bHQg
cGFyYW1ldGVyIG9uIHJlcXVlc3RSZXNvdXJjZSgpLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0
OjpkaWRSZWNlaXZlRGF0YSk6IFJlbW92ZSBtX2luY3JlbWVudGFsLCBzaW5jZSBpdHMgcHVycG9z
ZQorICAgICAgICAgICAgaXMgYWxyZWFkeSBlbmZvcmNlZCBpbiB0aGUgZGF0YSgpIGltcGxlbWVu
dGF0aW9uIG9mIGV2ZXJ5IENhY2hlZFJlc291cmNlIHRoYXQgZG9lc24ndCB3YW50CisgICAgICAg
ICAgICBpbmNyZW1lbnRhbCBsb2Fkcy4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0Lmg6CisKIDIwMTEtMDktMDEgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgSFRNTE1lZGlhRWxlbWVudCBzaG91bGQgdXNlIGZhc3RI
YXNBdHRyaWJ1dGUgaW5zdGVhZCBvZiBoYXNBdHRyaWJ1dGUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgJKHJldmlzaW9uIDk0MzAxKQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OSwxNCArNDksMjAgQEAKICAgICBCdWZmZXJEYXRhLAogICAgIERvTm90QnVmZmVy
RGF0YQogfTsKKyAgICAKK2VudW0gU2VjdXJpdHlDaGVja1BvbGljeSB7CisgICAgU2tpcFNlY3Vy
aXR5Q2hlY2ssCisgICAgRG9TZWN1cml0eUNoZWNrCit9OwogCiBzdHJ1Y3QgUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zIHsKLSAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMoKSA6IHNlbmRMb2FkQ2FsbGJh
Y2tzKERvTm90U2VuZENhbGxiYWNrcyksIHNuaWZmQ29udGVudChEb05vdFNuaWZmQ29udGVudCks
IHNob3VsZEJ1ZmZlckRhdGEoQnVmZmVyRGF0YSksIGFsbG93Q3JlZGVudGlhbHMoRG9Ob3RBbGxv
d1N0b3JlZENyZWRlbnRpYWxzKSB7IH0KLSAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENh
bGxiYWNrUG9saWN5IHNlbmRMb2FkQ2FsbGJhY2tzQXJnLCBDb250ZW50U25pZmZpbmdQb2xpY3kg
c25pZmZDb250ZW50QXJnLCBEYXRhQnVmZmVyaW5nUG9saWN5IHNob3VsZEJ1ZmZlckRhdGFBcmcs
IFN0b3JlZENyZWRlbnRpYWxzIGFsbG93Q3JlZGVudGlhbHNBcmcpIDogc2VuZExvYWRDYWxsYmFj
a3Moc2VuZExvYWRDYWxsYmFja3NBcmcpLCBzbmlmZkNvbnRlbnQoc25pZmZDb250ZW50QXJnKSwg
c2hvdWxkQnVmZmVyRGF0YShzaG91bGRCdWZmZXJEYXRhQXJnKSwgYWxsb3dDcmVkZW50aWFscyhh
bGxvd0NyZWRlbnRpYWxzQXJnKSB7IH0KKyAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMoKSA6IHNl
bmRMb2FkQ2FsbGJhY2tzKERvTm90U2VuZENhbGxiYWNrcyksIHNuaWZmQ29udGVudChEb05vdFNu
aWZmQ29udGVudCksIHNob3VsZEJ1ZmZlckRhdGEoQnVmZmVyRGF0YSksIGFsbG93Q3JlZGVudGlh
bHMoRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzKSwgc2VjdXJpdHlDaGVjayhEb1NlY3VyaXR5
Q2hlY2spIHsgfQorICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tQb2xpY3kg
c2VuZExvYWRDYWxsYmFja3NBcmcsIENvbnRlbnRTbmlmZmluZ1BvbGljeSBzbmlmZkNvbnRlbnRB
cmcsIERhdGFCdWZmZXJpbmdQb2xpY3kgc2hvdWxkQnVmZmVyRGF0YUFyZywgU3RvcmVkQ3JlZGVu
dGlhbHMgYWxsb3dDcmVkZW50aWFsc0FyZywgU2VjdXJpdHlDaGVja1BvbGljeSBzZWN1cml0eUNo
ZWNrQXJnKSA6IHNlbmRMb2FkQ2FsbGJhY2tzKHNlbmRMb2FkQ2FsbGJhY2tzQXJnKSwgc25pZmZD
b250ZW50KHNuaWZmQ29udGVudEFyZyksIHNob3VsZEJ1ZmZlckRhdGEoc2hvdWxkQnVmZmVyRGF0
YUFyZyksIGFsbG93Q3JlZGVudGlhbHMoYWxsb3dDcmVkZW50aWFsc0FyZyksIHNlY3VyaXR5Q2hl
Y2soc2VjdXJpdHlDaGVja0FyZykgeyB9CiAgICAgU2VuZENhbGxiYWNrUG9saWN5IHNlbmRMb2Fk
Q2FsbGJhY2tzOwogICAgIENvbnRlbnRTbmlmZmluZ1BvbGljeSBzbmlmZkNvbnRlbnQ7CiAgICAg
RGF0YUJ1ZmZlcmluZ1BvbGljeSBzaG91bGRCdWZmZXJEYXRhOwogICAgIFN0b3JlZENyZWRlbnRp
YWxzIGFsbG93Q3JlZGVudGlhbHM7IC8vIFdoZXRoZXIgSFRUUCBjcmVkZW50aWFscyBhbmQgY29v
a2llcyBhcmUgc2VudCB3aXRoIHRoZSByZXF1ZXN0LgorICAgIFNlY3VyaXR5Q2hlY2tQb2xpY3kg
c2VjdXJpdHlDaGVjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUgICAgCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgJKHJldmlzaW9uIDk0MzAxKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMTAzLDExICsxMDMsNiBAQAogICAgICAgICBTYW5kYm94QWxsID0gLTEgLy8gTWFzayB3
aXRoIGFsbCBiaXRzIHNldCB0byAxLgogICAgIH07CiAKLSAgICBlbnVtIFNlY3VyaXR5Q2hlY2tQ
b2xpY3kgewotICAgICAgICBTa2lwU2VjdXJpdHlDaGVjaywKLSAgICAgICAgRG9TZWN1cml0eUNo
ZWNrCi0gICAgfTsKLQogICAgIC8vIFBhc3NlZCB0byBGcmFtZUxvYWRlcjo6dXJsU2VsZWN0ZWQo
KSBhbmQgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTCgpCiAgICAgLy8g
dG8gY29udHJvbCB3aGV0aGVyLCBpbiB0aGUgY2FzZSBvZiBhIEphdmFTY3JpcHQgVVJMLCBleGVj
dXRlSWZKYXZhU2NyaXB0VVJMKCkgc2hvdWxkCiAgICAgLy8gcmVwbGFjZSB0aGUgZG9jdW1lbnQu
ICBJdCBpcyBhIEZJWE1FIHRvIGVsaW1pbmF0ZSB0aGlzIGV4dHJhIHBhcmFtZXRlciBmcm9tCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCShyZXZpc2lv
biA5NDMwMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzAsMTAgKzcwLDExIEBACiAjZW5kaWYKIH0KIAotdm9pZCBDYWNo
ZWRGb250Ojpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKikKK3ZvaWQgQ2FjaGVkRm9udDo6bG9h
ZChDYWNoZWRSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0
aW9ucykKIHsKICAgICAvLyBEb24ndCBsb2FkIHRoZSBmaWxlIHlldC4gIFdhaXQgZm9yIGFuIGFj
Y2VzcyBiZWZvcmUgdHJpZ2dlcmluZyB0aGUgbG9hZC4KICAgICBzZXRMb2FkaW5nKHRydWUpOwor
ICAgIG1fb3B0aW9ucyA9IG9wdGlvbnM7CiB9CiAKIHZvaWQgQ2FjaGVkRm9udDo6ZGlkQWRkQ2xp
ZW50KENhY2hlZFJlc291cmNlQ2xpZW50KiBjKQpAQCAtOTcsNyArOTgsNyBAQAogewogICAgIGlm
ICghbV9sb2FkSW5pdGlhdGVkKSB7CiAgICAgICAgIG1fbG9hZEluaXRpYXRlZCA9IHRydWU7Ci0g
ICAgICAgIENhY2hlZFJlc291cmNlOjpsb2FkKGRsKTsKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2U6
OmxvYWQoZGwsIG1fb3B0aW9ucyk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRGb250LmgJKHJldmlzaW9uIDk0MzAxKQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDks
NyBAQAogICAgIENhY2hlZEZvbnQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdmlydHVh
bCB+Q2FjaGVkRm9udCgpOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBsb2FkKENhY2hlZFJlc291
cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlcik7CisgICAgdmlydHVhbCB2b2lkIGxvYWQo
Q2FjaGVkUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA5NDMwMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgzLDYgKzgzLDEyIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBjb25z
dCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKQor
eworICAgIHN0YXRpYyBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucyhTZW5kQ2FsbGJhY2tz
LCBTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIERvU2Vj
dXJpdHlDaGVjayk7CisgICAgcmV0dXJuIG9wdGlvbnM7Cit9CisKIENhY2hlZFJlc291cmNlTG9h
ZGVyOjpDYWNoZWRSZXNvdXJjZUxvYWRlcihEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBtX2Rv
Y3VtZW50KGRvY3VtZW50KQogICAgICwgbV9yZXF1ZXN0Q291bnQoMCkKQEAgLTEzNywyMCArMTQz
LDIwIEBACiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgIH0KLSAgICBDYWNo
ZWRJbWFnZSogcmVzb3VyY2UgPSBzdGF0aWNfY2FzdDxDYWNoZWRJbWFnZSo+KHJlcXVlc3RSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSwgcmVxdWVzdCwgU3RyaW5nKCkpKTsK
KyAgICBDYWNoZWRJbWFnZSogcmVzb3VyY2UgPSBzdGF0aWNfY2FzdDxDYWNoZWRJbWFnZSo+KHJl
cXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSwgcmVxdWVzdCwgU3Ry
aW5nKCksIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSkpOwogICAgIGlmIChhdXRvTG9h
ZEltYWdlcygpICYmIHJlc291cmNlICYmIHJlc291cmNlLT5zdGlsbE5lZWRzTG9hZCgpKQotICAg
ICAgICByZXNvdXJjZS0+bG9hZCh0aGlzKTsKKyAgICAgICAgcmVzb3VyY2UtPmxvYWQodGhpcywg
ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKTsKICAgICByZXR1cm4gcmVzb3VyY2U7CiB9
CiAKIENhY2hlZEZvbnQqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0Rm9udChSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZEZvbnQq
PihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZSwgcmVxdWVzdCwg
U3RyaW5nKCkpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkRm9udCo+KHJlcXVlc3RS
ZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlLCByZXF1ZXN0LCBTdHJpbmcoKSwg
ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKSk7CiB9CiAKIENhY2hlZENTU1N0eWxlU2hl
ZXQqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0Q1NTU3R5bGVTaGVldChSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgUmVzb3VyY2VMb2FkUHJpb3Jp
dHkgcHJpb3JpdHkpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZENTU1N0eWxlU2hl
ZXQqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQsIHJlcXVl
c3QsIGNoYXJzZXQsIHByaW9yaXR5KSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZENT
U1N0eWxlU2hlZXQqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hl
ZXQsIHJlcXVlc3QsIGNoYXJzZXQsIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSwgcHJp
b3JpdHkpKTsKIH0KIAogQ2FjaGVkQ1NTU3R5bGVTaGVldCogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
OnJlcXVlc3RVc2VyQ1NTU3R5bGVTaGVldChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFN0cmluZyYgY2hhcnNldCkKQEAgLTE3MSw4ICsxNzcsNyBAQAogICAgIGlmICghaW5DYWNoZSkK
ICAgICAgICAgdXNlclNoZWV0LT5zZXRJbkNhY2hlKHRydWUpOwogCi0gICAgdXNlclNoZWV0LT5z
ZXRSZXNvdXJjZUxvYWRlck9wdGlvbnMoUmVzb3VyY2VMb2FkZXJPcHRpb25zKERvTm90U2VuZENh
bGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxz
KSk7Ci0gICAgdXNlclNoZWV0LT5sb2FkKHRoaXMsIC8qaW5jcmVtZW50YWwqLyBmYWxzZSwgU2tp
cFNlY3VyaXR5Q2hlY2spOworICAgIHVzZXJTaGVldC0+bG9hZCh0aGlzLCBSZXNvdXJjZUxvYWRl
ck9wdGlvbnMoRG9Ob3RTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIEFs
bG93U3RvcmVkQ3JlZGVudGlhbHMsIFNraXBTZWN1cml0eUNoZWNrKSk7CiAKICAgICBpZiAoIWlu
Q2FjaGUpCiAgICAgICAgIHVzZXJTaGVldC0+c2V0SW5DYWNoZShmYWxzZSk7CkBAIC0xODIsMTMg
KzE4NywxMyBAQAogCiBDYWNoZWRTY3JpcHQqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0
U2NyaXB0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KQog
ewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRTY3JpcHQqPihyZXF1ZXN0UmVzb3VyY2Uo
Q2FjaGVkUmVzb3VyY2U6OlNjcmlwdCwgcmVxdWVzdCwgY2hhcnNldCkpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxDYWNoZWRTY3JpcHQqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6
OlNjcmlwdCwgcmVxdWVzdCwgY2hhcnNldCwgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygp
KSk7CiB9CiAKICNpZiBFTkFCTEUoWFNMVCkKIENhY2hlZFhTTFN0eWxlU2hlZXQqIENhY2hlZFJl
c291cmNlTG9hZGVyOjpyZXF1ZXN0WFNMU3R5bGVTaGVldChSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZFhTTFN0eWxlU2hlZXQqPihyZXF1
ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlhTTFN0eWxlU2hlZXQsIHJlcXVlc3QsIFN0cmlu
ZygpKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZFhTTFN0eWxlU2hlZXQqPihyZXF1
ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlhTTFN0eWxlU2hlZXQsIHJlcXVlc3QsIFN0cmlu
ZygpLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpKTsKIH0KICNlbmRpZgogCkBAIC0z
MTIsNyArMzE3LDcgQEAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotQ2FjaGVkUmVzb3VyY2UqIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUg
dHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIFJl
c291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5LCBib29sIGZvclByZWxvYWQsIGNvbnN0IFJlc291
cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKK0NhY2hlZFJlc291cmNlKiBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5LCBi
b29sIGZvclByZWxvYWQpCiB7CiAgICAgS1VSTCB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAgIApA
QCAtMzUwLDcgKzM1NSw3IEBACiAgICAgICAgIHJlc291cmNlID0gbG9hZFJlc291cmNlKHR5cGUs
IHJlcXVlc3QsIGNoYXJzZXQsIHByaW9yaXR5LCBvcHRpb25zKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBSZXZhbGlkYXRlOgotICAgICAgICByZXNvdXJjZSA9IHJldmFsaWRhdGVSZXNvdXJj
ZShyZXNvdXJjZSwgcHJpb3JpdHkpOworICAgICAgICByZXNvdXJjZSA9IHJldmFsaWRhdGVSZXNv
dXJjZShyZXNvdXJjZSwgcHJpb3JpdHksIG9wdGlvbnMpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFVzZToKICAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmVzb3VyY2VBY2Nlc3NlZChyZXNvdXJj
ZSk7CkBAIC0zNjcsNyArMzcyLDcgQEAKICAgICByZXR1cm4gcmVzb3VyY2U7CiB9CiAgICAgCi1D
YWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJldmFsaWRhdGVSZXNvdXJjZShD
YWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KQor
Q2FjaGVkUmVzb3VyY2UqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXZhbGlkYXRlUmVzb3VyY2Uo
Q2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSwg
Y29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogewogICAgIEFTU0VSVChyZXNv
dXJjZSk7CiAgICAgQVNTRVJUKHJlc291cmNlLT5pbkNhY2hlKCkpOwpAQCAtMzg3LDcgKzM5Miw3
IEBACiAgICAgbWVtb3J5Q2FjaGUoKS0+YWRkKG5ld1Jlc291cmNlKTsKICAgICAKICAgICBuZXdS
ZXNvdXJjZS0+c2V0TG9hZFByaW9yaXR5KHByaW9yaXR5KTsKLSAgICBuZXdSZXNvdXJjZS0+bG9h
ZCh0aGlzKTsKKyAgICBuZXdSZXNvdXJjZS0+bG9hZCh0aGlzLCBvcHRpb25zKTsKIAogICAgIGlm
ICghdXJsUHJvdG9jb2xJc0RhdGEpCiAgICAgICAgIG1fdmFsaWRhdGVkVVJMcy5hZGQodXJsKTsK
QEAgLTQxMCw4ICs0MTUsNyBAQAogICAgICAgICByZXNvdXJjZS0+c2V0SW5DYWNoZSh0cnVlKTsK
ICAgICAKICAgICByZXNvdXJjZS0+c2V0TG9hZFByaW9yaXR5KHByaW9yaXR5KTsKLSAgICByZXNv
dXJjZS0+c2V0UmVzb3VyY2VMb2FkZXJPcHRpb25zKG9wdGlvbnMpOwotICAgIHJlc291cmNlLT5s
b2FkKHRoaXMpOworICAgIHJlc291cmNlLT5sb2FkKHRoaXMsIG9wdGlvbnMpOwogICAgIAogICAg
IGlmICghaW5DYWNoZSkgewogICAgICAgICByZXNvdXJjZS0+c2V0T3duaW5nQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIodGhpcyk7CkBAIC01NDksNyArNTUzLDcgQEAKICAgICAgICAgICAgIENhY2hlZElt
YWdlKiBpbWFnZSA9IGNvbnN0X2Nhc3Q8Q2FjaGVkSW1hZ2UqPihzdGF0aWNfY2FzdDxjb25zdCBD
YWNoZWRJbWFnZSo+KHJlc291cmNlKSk7CiAKICAgICAgICAgICAgIGlmIChpbWFnZS0+c3RpbGxO
ZWVkc0xvYWQoKSkKLSAgICAgICAgICAgICAgICBpbWFnZS0+bG9hZCh0aGlzKTsKKyAgICAgICAg
ICAgICAgICBpbWFnZS0+bG9hZCh0aGlzLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkp
OwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNjc5LDcgKzY4Myw3IEBACiAgICAgaWYgKHR5cGUg
PT0gQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdCB8fCB0eXBlID09IENhY2hlZFJlc291cmNlOjpDU1NT
dHlsZVNoZWV0KQogICAgICAgICBlbmNvZGluZyA9IGNoYXJzZXQuaXNFbXB0eSgpID8gbV9kb2N1
bWVudC0+Y2hhcnNldCgpIDogY2hhcnNldDsKIAotICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJj
ZSA9IHJlcXVlc3RSZXNvdXJjZSh0eXBlLCByZXF1ZXN0LCBlbmNvZGluZywgUmVzb3VyY2VMb2Fk
UHJpb3JpdHlVbnJlc29sdmVkLCB0cnVlKTsKKyAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2Ug
PSByZXF1ZXN0UmVzb3VyY2UodHlwZSwgcmVxdWVzdCwgZW5jb2RpbmcsIGRlZmF1bHRDYWNoZWRS
ZXNvdXJjZU9wdGlvbnMoKSwgUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkLCB0cnVlKTsK
ICAgICBpZiAoIXJlc291cmNlIHx8IChtX3ByZWxvYWRzICYmIG1fcHJlbG9hZHMtPmNvbnRhaW5z
KHJlc291cmNlKSkpCiAgICAgICAgIHJldHVybjsKICAgICByZXNvdXJjZS0+aW5jcmVhc2VQcmVs
b2FkQ291bnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcAkocmV2aXNpb24gOTQzMDEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSwxMCArODEsMTAgQEAKICAgICBk
ZXN0cm95RGVjb2RlZERhdGEoKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6bG9hZChDYWNoZWRS
ZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIpCit2b2lkIENhY2hlZEltYWdlOjps
b2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciwgY29uc3QgUmVz
b3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICghY2FjaGVkUmVzb3VyY2VM
b2FkZXIgfHwgY2FjaGVkUmVzb3VyY2VMb2FkZXItPmF1dG9Mb2FkSW1hZ2VzKCkpCi0gICAgICAg
IENhY2hlZFJlc291cmNlOjpsb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLCB0cnVlLCBEb1NlY3Vy
aXR5Q2hlY2spOworICAgICAgICBDYWNoZWRSZXNvdXJjZTo6bG9hZChjYWNoZWRSZXNvdXJjZUxv
YWRlciwgb3B0aW9ucyk7CiAgICAgZWxzZQogICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5oCShyZXZpc2lvbiA5NDMwMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksOCArMTA5LDgg
QEAKIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IFRoZSBkZWZhdWx0IHZhbHVlIGZvciBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMgd2lsbCBhbHdheXMgYmUgdXNlZCBjdXJyZW50bHkuCiAgICAgLy8gSXQg
aXMgcGx1bWJlZCBmb3IgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEy
MjUgLgotICAgIENhY2hlZFJlc291cmNlKiByZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6
OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgUmVzb3VyY2VM
b2FkUHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQsIGJvb2wgaXNQcmVs
b2FkID0gZmFsc2UsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgPSBSZXNvdXJjZUxvYWRl
ck9wdGlvbnMoU2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0
b3JlZENyZWRlbnRpYWxzKSk7Ci0gICAgQ2FjaGVkUmVzb3VyY2UqIHJldmFsaWRhdGVSZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZSosIFJlc291cmNlTG9hZFByaW9yaXR5KTsKKyAgICBDYWNoZWRSZXNv
dXJjZSogcmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlLCBSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYs
IFJlc291cmNlTG9hZFByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkLCBi
b29sIGlzUHJlbG9hZCA9IGZhbHNlKTsKKyAgICBDYWNoZWRSZXNvdXJjZSogcmV2YWxpZGF0ZVJl
c291cmNlKENhY2hlZFJlc291cmNlKiwgUmVzb3VyY2VMb2FkUHJpb3JpdHksIGNvbnN0IFJlc291
cmNlTG9hZGVyT3B0aW9ucyYpOwogICAgIENhY2hlZFJlc291cmNlKiBsb2FkUmVzb3VyY2UoQ2Fj
aGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNl
dCwgUmVzb3VyY2VMb2FkUHJpb3JpdHksIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOwog
ICAgIHZvaWQgcmVxdWVzdFByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNldCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCShyZXZpc2lvbiA5NDMwMSkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0
Miw3IEBACiAgICAgQ2FjaGVkSW1hZ2UoSW1hZ2UqKTsKICAgICB2aXJ0dWFsIH5DYWNoZWRJbWFn
ZSgpOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiBj
YWNoZWRSZXNvdXJjZUxvYWRlcik7CisgICAgdmlydHVhbCB2b2lkIGxvYWQoQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKIAogICAgIEltYWdlKiBp
bWFnZSgpIGNvbnN0OyAvLyBSZXR1cm5zIHRoZSBudWxsSW1hZ2UoKSBpZiB0aGUgaW1hZ2UgaXMg
bm90IGF2YWlsYWJsZSB5ZXQuCiAgICAgYm9vbCBoYXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aW1hZ2UuZ2V0KCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmNwcAkocmV2aXNpb24gOTQzMDEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw2
IEBACiAgICAgLCBtX2xvYWRpbmcoZmFsc2UpCiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1f
c3RhdHVzKFBlbmRpbmcpCi0gICAgLCBtX29wdGlvbnMoU2VuZENhbGxiYWNrcywgU25pZmZDb250
ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzKQogI2lmbmRlZiBOREVCVUcK
ICAgICAsIG1fZGVsZXRlZChmYWxzZSkKICAgICAsIG1fbHJ1SW5kZXgoMCkKQEAgLTEzMSwxMCAr
MTMwLDExIEBACiAgICAgICAgIG1fb3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlbW92ZUNh
Y2hlZFJlc291cmNlKHRoaXMpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjpsb2FkKENhY2hl
ZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciwgYm9vbCBpbmNyZW1lbnRhbCwg
U2VjdXJpdHlDaGVja1BvbGljeSBzZWN1cml0eUNoZWNrKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6
bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIsIGNvbnN0IFJl
c291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKKyAgICBtX29wdGlvbnMgPSBvcHRpb25z
OwogICAgIG1fbG9hZGluZyA9IHRydWU7Ci0gICAgbV9yZXF1ZXN0ID0gQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0Ojpsb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLCB0aGlzLCBpbmNyZW1lbnRhbCwgc2Vj
dXJpdHlDaGVjaywgbV9vcHRpb25zKTsKKyAgICBtX3JlcXVlc3QgPSBDYWNoZWRSZXNvdXJjZVJl
cXVlc3Q6OmxvYWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIsIHRoaXMsIG9wdGlvbnMpOwogICAgIGlm
IChtX3JlcXVlc3QpIHsKICAgICAgICAgbV9zdGF0dXMgPSBQZW5kaW5nOwogICAgICAgICBjYWNo
ZWRSZXNvdXJjZUxvYWRlci0+aW5jcmVtZW50UmVxdWVzdENvdW50KHRoaXMpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHJldmlzaW9uIDk0
MzAxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTg1LDEwICs4NSw5IEBACiAKICAgICBDYWNoZWRSZXNvdXJjZShjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBUeXBlKTsKICAgICB2aXJ0dWFsIH5DYWNoZWRSZXNvdXJjZSgp
OwotICAgIAotICAgIHZpcnR1YWwgdm9pZCBsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNo
ZWRSZXNvdXJjZUxvYWRlcikgIHsgbG9hZChjYWNoZWRSZXNvdXJjZUxvYWRlciwgZmFsc2UsIERv
U2VjdXJpdHlDaGVjayk7IH0KLSAgICB2b2lkIGxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqLCBi
b29sIGluY3JlbWVudGFsLCBTZWN1cml0eUNoZWNrUG9saWN5KTsKIAorICAgIHZpcnR1YWwgdm9p
ZCBsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25z
Jik7CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgeyB9CiAg
ICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCk7CkBAIC0xOTQsOCArMTkzLDcgQEAKIAogICAgIGJvb2wgd2FzQ2Fu
Y2VsZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBDYW5jZWxlZDsgfQogICAgIGJvb2wg
ZXJyb3JPY2N1cnJlZCgpIGNvbnN0IHsgcmV0dXJuIChtX3N0YXR1cyA9PSBMb2FkRXJyb3IgfHwg
bV9zdGF0dXMgPT0gRGVjb2RlRXJyb3IpOyB9Ci0gICAgCi0gICAgdm9pZCBzZXRSZXNvdXJjZUxv
YWRlck9wdGlvbnMoY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKSB7IG1fb3B0
aW9ucyA9IG9wdGlvbnM7IH0KKwogICAgIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcygp
IGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJh
Y2tzOyB9CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIHsgfQpA
QCAtMjQyLDYgKzI0MCw3IEBACiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVzb3VyY2VSZXF1ZXN0
OwogICAgIFN0cmluZyBtX2FjY2VwdDsKICAgICBPd25QdHI8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0
PiBtX3JlcXVlc3Q7CisgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG1fb3B0aW9uczsKICAgICBS
ZXNvdXJjZUxvYWRQcmlvcml0eSBtX2xvYWRQcmlvcml0eTsKIAogICAgIFJlc291cmNlUmVzcG9u
c2UgbV9yZXNwb25zZTsKQEAgLTI3OSw4ICsyNzgsNiBAQAogICAgIHVuc2lnbmVkIG1fdHlwZSA6
IDM7IC8vIFR5cGUKICAgICB1bnNpZ25lZCBtX3N0YXR1cyA6IDM7IC8vIFN0YXR1cwogCi0gICAg
UmVzb3VyY2VMb2FkZXJPcHRpb25zIG1fb3B0aW9uczsKLQogI2lmbmRlZiBOREVCVUcKICAgICBi
b29sIG1fZGVsZXRlZDsKICAgICB1bnNpZ25lZCBtX2xydUluZGV4OwpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAJ
KHJldmlzaW9uIDk0MzAxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDEwICs3NCw5IEBACiB9CiAj
ZW5kaWYKIAotQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpDYWNoZWRSZXNvdXJjZVJlcXVlc3QoQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdXJjZSog
cmVzb3VyY2UsIGJvb2wgaW5jcmVtZW50YWwpCitDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OkNhY2hl
ZFJlc291cmNlUmVxdWVzdChDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIsIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKICAgICA6IG1fY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIoY2FjaGVkUmVzb3VyY2VMb2FkZXIpCiAgICAgLCBtX3Jlc291cmNlKHJlc291cmNlKQotICAg
ICwgbV9pbmNyZW1lbnRhbChpbmNyZW1lbnRhbCkKICAgICAsIG1fbXVsdGlwYXJ0KGZhbHNlKQog
ICAgICwgbV9maW5pc2hpbmcoZmFsc2UpCiB7CkBAIC04Nyw5ICs4Niw5IEBACiB7CiB9CiAKLVBh
c3NPd25QdHI8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0PiBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6Omxv
YWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNv
dXJjZSogcmVzb3VyY2UsIGJvb2wgaW5jcmVtZW50YWwsIFNlY3VyaXR5Q2hlY2tQb2xpY3kgc2Vj
dXJpdHlDaGVjaywgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQorUGFzc093
blB0cjxDYWNoZWRSZXNvdXJjZVJlcXVlc3Q+IENhY2hlZFJlc291cmNlUmVxdWVzdDo6bG9hZChD
YWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291cmNl
KiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogewotICAg
IE93blB0cjxDYWNoZWRSZXNvdXJjZVJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdFB0cihuZXcgQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0KGNhY2hlZFJlc291cmNlTG9hZGVyLCByZXNvdXJjZSwgaW5jcmVt
ZW50YWwpKTsKKyAgICBPd25QdHI8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0ID0gYWRv
cHRQdHIobmV3IENhY2hlZFJlc291cmNlUmVxdWVzdChjYWNoZWRSZXNvdXJjZUxvYWRlciwgcmVz
b3VyY2UpKTsKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgPSByZXNvdXJj
ZS0+cmVzb3VyY2VSZXF1ZXN0KCk7CiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCkBAIC0xMjQsNyAr
MTIzLDcgQEAKICAgICBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSA9IHJlc291cmNlLT5s
b2FkUHJpb3JpdHkoKTsKICAgICByZXNvdXJjZVJlcXVlc3Quc2V0UHJpb3JpdHkocHJpb3JpdHkp
OwogCi0gICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSByZXNvdXJjZUxvYWRT
Y2hlZHVsZXIoKS0+c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIt
PmRvY3VtZW50KCktPmZyYW1lKCksIHJlcXVlc3QuZ2V0KCksIHJlc291cmNlUmVxdWVzdCwgcHJp
b3JpdHksIHNlY3VyaXR5Q2hlY2ssIG9wdGlvbnMpOworICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxv
YWRlcj4gbG9hZGVyID0gcmVzb3VyY2VMb2FkU2NoZWR1bGVyKCktPnNjaGVkdWxlU3VicmVzb3Vy
Y2VMb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5mcmFtZSgpLCByZXF1ZXN0
LmdldCgpLCByZXNvdXJjZVJlcXVlc3QsIHByaW9yaXR5LCBvcHRpb25zKTsKICAgICBpZiAoIWxv
YWRlciB8fCBsb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpIHsKICAgICAgICAgLy8gRklY
TUU6IFdoYXQgaWYgcmVzb3VyY2VzIGluIG90aGVyIGZyYW1lcyB3ZXJlIHdhaXRpbmcgZm9yIHRo
aXMgcmV2YWxpZGF0aW9uPwogICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2Fubm90IHN0
YXJ0IGxvYWRpbmcgJyVzJyIsIHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRh
KCkpOwpAQCAtMjcxLDcgKzI3MCw3IEBACiAgICAgICAgIC8vIFRoZSByZXNvdXJjZSBkYXRhIHdp
bGwgY2hhbmdlIGFzIHRoZSBuZXh0IHBhcnQgaXMgbG9hZGVkLCBzbyB3ZSBuZWVkIHRvIG1ha2Ug
YSBjb3B5LgogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb3BpZWREYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7CiAgICAgICAgIG1fcmVzb3VyY2UtPmRhdGEoY29w
aWVkRGF0YS5yZWxlYXNlKCksIHRydWUpOwotICAgIH0gZWxzZSBpZiAobV9pbmNyZW1lbnRhbCkK
KyAgICB9IGVsc2UKICAgICAgICAgbV9yZXNvdXJjZS0+ZGF0YShsb2FkZXItPnJlc291cmNlRGF0
YSgpLCBmYWxzZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZVJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgJKHJldmlzaW9uIDk0MzAxKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MywxMyArNDMsMTMgQEAKIAogICAgIGNsYXNzIENhY2hlZFJlc291cmNlUmVxdWVz
dCA6IHByaXZhdGUgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgc3RhdGljIFBhc3NPd25QdHI8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0PiBsb2FkKENhY2hlZFJl
c291cmNlTG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2UqLCBib29sIGluY3JlbWVudGFsLCBTZWN1cml0
eUNoZWNrUG9saWN5LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKKyAgICAgICAgc3Rh
dGljIFBhc3NPd25QdHI8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0PiBsb2FkKENhY2hlZFJlc291cmNl
TG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsK
ICAgICAgICAgfkNhY2hlZFJlc291cmNlUmVxdWVzdCgpOwogCiAgICAgICAgIENhY2hlZFJlc291
cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVk
UmVzb3VyY2VMb2FkZXI7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIENhY2hlZFJlc291cmNl
UmVxdWVzdChDYWNoZWRSZXNvdXJjZUxvYWRlciosIENhY2hlZFJlc291cmNlKiwgYm9vbCBpbmNy
ZW1lbnRhbCk7CisgICAgICAgIENhY2hlZFJlc291cmNlUmVxdWVzdChDYWNoZWRSZXNvdXJjZUxv
YWRlciosIENhY2hlZFJlc291cmNlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJl
cXVlc3QoU3VicmVzb3VyY2VMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoU3Vi
cmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IGNoYXIqLCBp
bnQpOwpAQCAtNjEsNyArNjEsNiBAQAogICAgICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+
IG1fbG9hZGVyOwogICAgICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciogbV9jYWNoZWRSZXNvdXJj
ZUxvYWRlcjsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIG1fcmVzb3VyY2U7Ci0gICAgICAgIGJv
b2wgbV9pbmNyZW1lbnRhbDsKICAgICAgICAgYm9vbCBtX211bHRpcGFydDsKICAgICAgICAgYm9v
bCBtX2ZpbmlzaGluZzsKICAgICB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCShyZXZpc2lvbiA5NDMwMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKEZyYW1l
KiBmcmFtZSwgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQqIGNsaWVudCkKLSAgICA6
IFJlc291cmNlTG9hZGVyKGZyYW1lLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxiYWNr
cywgU25pZmZDb250ZW50LCBEb05vdEJ1ZmZlckRhdGEsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMp
KQorICAgIDogUmVzb3VyY2VMb2FkZXIoZnJhbWUsIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5k
Q2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIERvTm90QnVmZmVyRGF0YSwgQWxsb3dTdG9yZWRDcmVk
ZW50aWFscywgU2tpcFNlY3VyaXR5Q2hlY2spKQogICAgICwgbV9jbGllbnQoY2xpZW50KQogewog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxl
ci5jcHAJKHJldmlzaW9uIDk0MzAxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZFNjaGVkdWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDkgKzg1LDkgQEAKICNlbmRp
ZgogfQogCi1QYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBSZXNvdXJjZUxvYWRTY2hlZHVs
ZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiBmcmFtZSwgU3VicmVzb3VyY2VMb2Fk
ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJj
ZUxvYWRQcmlvcml0eSBwcmlvcml0eSwgU2VjdXJpdHlDaGVja1BvbGljeSBzZWN1cml0eUNoZWNr
LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCitQYXNzUmVmUHRyPFN1YnJl
c291cmNlTG9hZGVyPiBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VM
b2FkKEZyYW1lKiBmcmFtZSwgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSwg
Y29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogewotICAgIFJlZlB0cjxTdWJy
ZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShmcmFtZSwg
Y2xpZW50LCByZXF1ZXN0LCBzZWN1cml0eUNoZWNrLCBvcHRpb25zKTsKKyAgICBSZWZQdHI8U3Vi
cmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoZnJhbWUs
IGNsaWVudCwgcmVxdWVzdCwgb3B0aW9ucyk7CiAgICAgaWYgKGxvYWRlcikKICAgICAgICAgc2No
ZWR1bGVMb2FkKGxvYWRlci5nZXQoKSwgcHJpb3JpdHkpOwogICAgIHJldHVybiBsb2FkZXIucmVs
ZWFzZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShy
ZXZpc2lvbiA5NDMwMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZUVy
cm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKQEAgLTExOCw2ICsxMTksMTgg
QEAKICAgICAKICAgICBSZXNvdXJjZVJlcXVlc3QgY2xpZW50UmVxdWVzdChyKTsKICAgICAKKyAg
ICBGcmFtZUxvYWRlciogZmwgPSBtX2ZyYW1lLT5sb2FkZXIoKTsKKyAgICBpZiAobV9vcHRpb25z
LnNlY3VyaXR5Q2hlY2sgPT0gRG9TZWN1cml0eUNoZWNrICYmIChmbC0+c3RhdGUoKSA9PSBGcmFt
ZVN0YXRlUHJvdmlzaW9uYWwgfHwgIWZsLT5hY3RpdmVEb2N1bWVudExvYWRlcigpIHx8IGZsLT5h
Y3RpdmVEb2N1bWVudExvYWRlcigpLT5pc1N0b3BwaW5nKCkpKSB7CisgICAgICAgIGNhbmNlbCgp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIGlmIChtX29wdGlvbnMu
c2VjdXJpdHlDaGVjayA9PSBEb1NlY3VyaXR5Q2hlY2sgJiYgIW1fZnJhbWUtPmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXkoY2xpZW50UmVxdWVzdC51cmwoKSkpIHsKKyAg
ICAgICAgY2FuY2VsKCk7CisgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWls
ZWQobV9mcmFtZS5nZXQoKSwgY2xpZW50UmVxdWVzdC51cmwoKS5zdHJpbmcoKSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI2MzkxCiAgICAgLy8gVGhlIHZhcmlvdXMgcGx1Zy1pbiBpbXBs
ZW1lbnRhdGlvbnMgY2FsbCBkaXJlY3RseSB0byBSZXNvdXJjZUxvYWRlcjo6bG9hZCgpIGluc3Rl
YWQgb2YgcGlwaW5nIHJlcXVlc3RzCiAgICAgLy8gdGhyb3VnaCBGcmFtZUxvYWRlci4gQXMgYSBy
ZXN1bHQsIHRoZXkgbWlzcyB0aGUgRnJhbWVMb2FkZXI6OmFkZEV4dHJhRmllbGRzVG9SZXF1ZXN0
KCkgc3RlcCB3aGljaCBzZXRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291
cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJl
c291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gOTQzMDEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBNYWluUmVzb3VyY2VMb2FkZXI6Ok1haW5SZXNvdXJj
ZUxvYWRlcihGcmFtZSogZnJhbWUpCi0gICAgOiBSZXNvdXJjZUxvYWRlcihmcmFtZSwgUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwg
QWxsb3dTdG9yZWRDcmVkZW50aWFscykpCisgICAgOiBSZXNvdXJjZUxvYWRlcihmcmFtZSwgUmVz
b3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0
YSwgQWxsb3dTdG9yZWRDcmVkZW50aWFscywgU2tpcFNlY3VyaXR5Q2hlY2spKQogICAgICwgbV9k
YXRhTG9hZFRpbWVyKHRoaXMsICZNYWluUmVzb3VyY2VMb2FkZXI6OmhhbmRsZURhdGFMb2FkTm93
KQogICAgICwgbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudChmYWxzZSkKICAgICAsIG1fd2FpdGlu
Z0ZvckNvbnRlbnRQb2xpY3koZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkU2NoZWR1bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCShyZXZpc2lvbiA5NDMwMSkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTEs
NyArNTEsNyBAQAogcHVibGljOgogICAgIGZyaWVuZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXIqIHJl
c291cmNlTG9hZFNjaGVkdWxlcigpOwogCi0gICAgUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRl
cj4gc2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqLCBTdWJyZXNvdXJjZUxvYWRlckNsaWVu
dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlTG9hZFByaW9yaXR5ID0gUmVzb3Vy
Y2VMb2FkUHJpb3JpdHlMb3csIFNlY3VyaXR5Q2hlY2tQb2xpY3kgPSBEb1NlY3VyaXR5Q2hlY2ss
IGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgPSBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2Vu
ZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRp
YWxzKSk7CisgICAgUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gc2NoZWR1bGVTdWJyZXNv
dXJjZUxvYWQoRnJhbWUqLCBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIFJlc291cmNlTG9hZFByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3cs
IGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgPSBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2Vu
ZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRp
YWxzLCBEb1NlY3VyaXR5Q2hlY2spKTsKICAgICBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyPiBzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqLCBOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQg
YWRkTWFpblJlc291cmNlTG9hZChSZXNvdXJjZUxvYWRlciopOwogICAgIHZvaWQgcmVtb3ZlKFJl
c291cmNlTG9hZGVyKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAJKHJldmlzaW9uIDk0MzAxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsMjIgKzYxLDE0IEBACiAj
ZW5kaWYKIH0KIAotUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gU3VicmVzb3VyY2VMb2Fk
ZXI6OmNyZWF0ZShGcmFtZSogZnJhbWUsIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiBjbGllbnQs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2VjdXJpdHlDaGVja1BvbGljeSBzZWN1
cml0eUNoZWNrLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCitQYXNzUmVm
UHRyPFN1YnJlc291cmNlTG9hZGVyPiBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKEZyYW1lKiBm
cmFtZSwgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7CiAg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBGcmFtZUxvYWRlciogZmwg
PSBmcmFtZS0+bG9hZGVyKCk7Ci0gICAgaWYgKHNlY3VyaXR5Q2hlY2sgPT0gRG9TZWN1cml0eUNo
ZWNrICYmIChmbC0+c3RhdGUoKSA9PSBGcmFtZVN0YXRlUHJvdmlzaW9uYWwgfHwgIWZsLT5hY3Rp
dmVEb2N1bWVudExvYWRlcigpIHx8IGZsLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5pc1N0b3Bw
aW5nKCkpKQotICAgICAgICByZXR1cm4gMDsKLQogICAgIFJlc291cmNlUmVxdWVzdCBuZXdSZXF1
ZXN0ID0gcmVxdWVzdDsKIAotICAgIGlmIChzZWN1cml0eUNoZWNrID09IERvU2VjdXJpdHlDaGVj
ayAmJiAhZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXkocmVx
dWVzdC51cmwoKSkpIHsKLSAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxl
ZChmcmFtZSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSk7Ci0gICAgICAgIHJldHVybiAwOwotICAg
IH0KLQogICAgIC8vIE5vdGU6IFdlIHNraXAgdGhlIENvbnRlbnQtU2VjdXJpdHktUG9saWN5IGNo
ZWNrIGhlcmUgYmVjYXVzZSB3ZSBjaGVjawogICAgIC8vIHRoZSBDb250ZW50LVNlY3VyaXR5LVBv
bGljeSBhdCB0aGUgQ2FjaGVkUmVzb3VyY2VMb2FkZXIgbGF5ZXIgc28gd2UgY2FuCiAgICAgLy8g
aGFuZGxlIGRpZmZlcmVudCByZXNvdXJjZSB0eXBlcyBkaWZmZXJlbnRseS4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCShy
ZXZpc2lvbiA5NDMwMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjYsNiArMzI2LDcgQEAKIHsKICAgICAv
LyBBbnkgY3JlZGVudGlhbCBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgY3Jvc3Mt
c2l0ZSByZXF1ZXN0cy4KICAgICBjb25zdCBLVVJMJiByZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwo
KTsKKyAgICBtX29wdGlvbnMuc2VjdXJpdHlDaGVjayA9IHNlY3VyaXR5Q2hlY2s7CiAgICAgQVNT
RVJUKG1fc2FtZU9yaWdpblJlcXVlc3QgfHwgcmVxdWVzdFVSTC51c2VyKCkuaXNFbXB0eSgpKTsK
ICAgICBBU1NFUlQobV9zYW1lT3JpZ2luUmVxdWVzdCB8fCByZXF1ZXN0VVJMLnBhc3MoKS5pc0Vt
cHR5KCkpOwogCkBAIC0zNTEsNyArMzUyLDcgQEAKIAogICAgICAgICAvLyBDbGVhciB0aGUgbG9h
ZGVyIHNvIHRoYXQgYW55IGNhbGxiYWNrcyBmcm9tIFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUg
d2lsbCBub3QgaGF2ZSB0aGUgb2xkIGxvYWRlci4KICAgICAgICAgbV9sb2FkZXIgPSAwOwotICAg
ICAgICBtX2xvYWRlciA9IHJlc291cmNlTG9hZFNjaGVkdWxlcigpLT5zY2hlZHVsZVN1YnJlc291
cmNlTG9hZChtX2RvY3VtZW50LT5mcmFtZSgpLCB0aGlzLCByZXF1ZXN0LCBSZXNvdXJjZUxvYWRQ
cmlvcml0eU1lZGl1bSwgc2VjdXJpdHlDaGVjaywgb3B0aW9ucyk7CisgICAgICAgIG1fbG9hZGVy
ID0gcmVzb3VyY2VMb2FkU2NoZWR1bGVyKCktPnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKG1fZG9j
dW1lbnQtPmZyYW1lKCksIHRoaXMsIHJlcXVlc3QsIFJlc291cmNlTG9hZFByaW9yaXR5TWVkaXVt
LCBvcHRpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiA5NDMwMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw3ICs0MSw3IEBACiAgICAgCiAgICAgY2xhc3MgU3VicmVzb3VyY2VMb2FkZXIgOiBwdWJs
aWMgUmVzb3VyY2VMb2FkZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3VicmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShGcmFtZSosIFN1YnJlc291cmNlTG9hZGVyQ2xp
ZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU2VjdXJpdHlDaGVja1BvbGljeSwgY29uc3Qg
UmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN1YnJl
c291cmNlTG9hZGVyPiBjcmVhdGUoRnJhbWUqLCBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCosIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOwogCiAg
ICAgICAgIHZvaWQgY2xlYXJDbGllbnQoKSB7IG1fY2xpZW50ID0gMDsgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106149</attachid>
            <date>2011-09-02 10:13:06 -0700</date>
            <delta_ts>2011-09-21 10:23:31 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-67443-20110902101304.patch</filename>
            <type>text/plain</type>
            <size>31496</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0NDIxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEtMDktMDEgIE5hdGUgQ2hh
cGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBDbGVhbiB1cCBDYWNoZWRSZXNv
dXJjZTo6bG9hZCgpLiBDb2xsYXBzZSBpdHMKKyAgICAgICAgbG9naWMgaW50byBhIHNpbmdsZSBj
YWxsc2l0ZSwgdGFraW5nIGp1c3QgYQorICAgICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciBhbmQg
YSBSZXNvdXJjZUxvYWRlck9wdGlvbnMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY3NDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29p
dmlzdG8uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3RvciBvbmx5LgorCisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVy
L0ZyYW1lTG9hZGVyVHlwZXMuaDogTW92ZSBTZWN1cml0eUNoZWNrUG9saWN5IHRvIFJlc291cmNl
TG9hZGVyT3B0aW9ucy5oLgorICAgICAgICAqIGxvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHA6CisgICAg
ICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6CisgICAgICAgICogbG9hZGVy
L1Jlc291cmNlTG9hZFNjaGVkdWxlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHA6IEVuZm9yY2UgU2VjdXJpdHlDaGVja1BvbGljeSBoZXJlIGluc3RlYWQgb2YgU3VicmVz
b3VyY2VMb2FkZXIuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oOiBT
dG9yZSBTZWN1cml0eUNoZWNrUG9saWN5IG9uIFJlc291cmNlTG9hZGVyT3B0aW9ucy4KKyAgICAg
ICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVmYXVsdENhY2hl
ZFJlc291cmNlT3B0aW9ucyk6IERlZmluZSB0aGUgZGVmYXVsdCBSZXNvdXJjZUxvYWRlck9wdGlv
bnMgZm9yCisgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZSBsb2FkcyBoZXJlIGluc3RlYWQgb2Yg
YXMgYSBkZWZhdWx0IHBhcmFtZXRlciBvbiByZXF1ZXN0UmVzb3VyY2UoKS4KKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOiBSZW1vdmUgbV9pbmNyZW1lbnRhbCwgc2lu
Y2UgaXRzIHB1cnBvc2UKKyAgICAgICAgICAgIGlzIGFscmVhZHkgZW5mb3JjZWQgaW4gdGhlIGRh
dGEoKSBpbXBsZW1lbnRhdGlvbiBvZiBldmVyeSBDYWNoZWRSZXNvdXJjZSB0aGF0IGRvZXNuJ3Qg
d2FudAorICAgICAgICAgICAgaW5jcmVtZW50YWwgbG9hZHMuCisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5oOgorCiAyMDExLTA5LTAyICBBbmRyZWFzIEtsaW5n
ICA8a2xpbmdAd2Via2l0Lm9yZz4KIAogICAgICAgICBVc2UgZmFzdEdldEF0dHJpYnV0ZSgpIGFu
ZCBmYXN0SGFzQXR0cmlidXRlKCkgd2hlcmUgYXBwcm9wcmlhdGUuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAkocmV2aXNp
b24gOTQ0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI2LDYgKzMyNiw3IEBAIHZvaWQgRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWUKIHsKICAgICAvLyBBbnkgY3JlZGVudGlhbCBzaG91
bGQgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgY3Jvc3Mtc2l0ZSByZXF1ZXN0cy4KICAgICBj
b25zdCBLVVJMJiByZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwoKTsKKyAgICBtX29wdGlvbnMuc2Vj
dXJpdHlDaGVjayA9IHNlY3VyaXR5Q2hlY2s7CiAgICAgQVNTRVJUKG1fc2FtZU9yaWdpblJlcXVl
c3QgfHwgcmVxdWVzdFVSTC51c2VyKCkuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQobV9zYW1lT3Jp
Z2luUmVxdWVzdCB8fCByZXF1ZXN0VVJMLnBhc3MoKS5pc0VtcHR5KCkpOwogCkBAIC0zNTEsNyAr
MzUyLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZQogCiAgICAg
ICAgIC8vIENsZWFyIHRoZSBsb2FkZXIgc28gdGhhdCBhbnkgY2FsbGJhY2tzIGZyb20gU3VicmVz
b3VyY2VMb2FkZXI6OmNyZWF0ZSB3aWxsIG5vdCBoYXZlIHRoZSBvbGQgbG9hZGVyLgogICAgICAg
ICBtX2xvYWRlciA9IDA7Ci0gICAgICAgIG1fbG9hZGVyID0gcmVzb3VyY2VMb2FkU2NoZWR1bGVy
KCktPnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKG1fZG9jdW1lbnQtPmZyYW1lKCksIHRoaXMsIHJl
cXVlc3QsIFJlc291cmNlTG9hZFByaW9yaXR5TWVkaXVtLCBzZWN1cml0eUNoZWNrLCBvcHRpb25z
KTsKKyAgICAgICAgbV9sb2FkZXIgPSByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2NoZWR1bGVT
dWJyZXNvdXJjZUxvYWQobV9kb2N1bWVudC0+ZnJhbWUoKSwgdGhpcywgcmVxdWVzdCwgUmVzb3Vy
Y2VMb2FkUHJpb3JpdHlNZWRpdW0sIG9wdGlvbnMpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCShyZXZp
c2lvbiA5NDQyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMywxMSArMTAzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBTYW5kYm94QWxsID0gLTEgLy8gTWFzayB3aXRoIGFsbCBiaXRzIHNldCB0byAxLgog
ICAgIH07CiAKLSAgICBlbnVtIFNlY3VyaXR5Q2hlY2tQb2xpY3kgewotICAgICAgICBTa2lwU2Vj
dXJpdHlDaGVjaywKLSAgICAgICAgRG9TZWN1cml0eUNoZWNrCi0gICAgfTsKLQogICAgIC8vIFBh
c3NlZCB0byBGcmFtZUxvYWRlcjo6dXJsU2VsZWN0ZWQoKSBhbmQgU2NyaXB0Q29udHJvbGxlcjo6
ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTCgpCiAgICAgLy8gdG8gY29udHJvbCB3aGV0aGVyLCBpbiB0
aGUgY2FzZSBvZiBhIEphdmFTY3JpcHQgVVJMLCBleGVjdXRlSWZKYXZhU2NyaXB0VVJMKCkgc2hv
dWxkCiAgICAgLy8gcmVwbGFjZSB0aGUgZG9jdW1lbnQuICBJdCBpcyBhIEZJWE1FIHRvIGVsaW1p
bmF0ZSB0aGlzIGV4dHJhIHBhcmFtZXRlciBmcm9tCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gOTQ0MjEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjAsNyArNjAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBNYWluUmVzb3VyY2VMb2FkZXI6
Ok1haW5SZXNvdXJjZUxvYWRlcihGcmFtZSogZnJhbWUpCi0gICAgOiBSZXNvdXJjZUxvYWRlcihm
cmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwg
QnVmZmVyRGF0YSwgQWxsb3dTdG9yZWRDcmVkZW50aWFscykpCisgICAgOiBSZXNvdXJjZUxvYWRl
cihmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVu
dCwgQnVmZmVyRGF0YSwgQWxsb3dTdG9yZWRDcmVkZW50aWFscywgU2tpcFNlY3VyaXR5Q2hlY2sp
KQogICAgICwgbV9kYXRhTG9hZFRpbWVyKHRoaXMsICZNYWluUmVzb3VyY2VMb2FkZXI6OmhhbmRs
ZURhdGFMb2FkTm93KQogICAgICwgbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudChmYWxzZSkKICAg
ICAsIG1fd2FpdGluZ0ZvckNvbnRlbnRQb2xpY3koZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAJKHJldmlz
aW9uIDk0NDIxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6TmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIoRnJhbWUqIGZyYW1lLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCog
Y2xpZW50KQotICAgIDogUmVzb3VyY2VMb2FkZXIoZnJhbWUsIFJlc291cmNlTG9hZGVyT3B0aW9u
cyhTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIERvTm90QnVmZmVyRGF0YSwgQWxsb3dTdG9y
ZWRDcmVkZW50aWFscykpCisgICAgOiBSZXNvdXJjZUxvYWRlcihmcmFtZSwgUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgRG9Ob3RCdWZmZXJEYXRhLCBB
bGxvd1N0b3JlZENyZWRlbnRpYWxzLCBTa2lwU2VjdXJpdHlDaGVjaykpCiAgICAgLCBtX2NsaWVu
dChjbGllbnQpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmNwcAkocmV2aXNpb24gOTQ0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsOSAr
ODUsOSBAQCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OlJlc291cmNlTG9hZFNjaGVkCiAjZW5kaWYK
IH0KIAotUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gUmVzb3VyY2VMb2FkU2NoZWR1bGVy
OjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmFtZSogZnJhbWUsIFN1YnJlc291cmNlTG9hZGVy
Q2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VM
b2FkUHJpb3JpdHkgcHJpb3JpdHksIFNlY3VyaXR5Q2hlY2tQb2xpY3kgc2VjdXJpdHlDaGVjaywg
Y29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQorUGFzc1JlZlB0cjxTdWJyZXNv
dXJjZUxvYWRlcj4gUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9h
ZChGcmFtZSogZnJhbWUsIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHksIGNv
bnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBSZWZQdHI8U3VicmVz
b3VyY2VMb2FkZXI+IGxvYWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoZnJhbWUsIGNs
aWVudCwgcmVxdWVzdCwgc2VjdXJpdHlDaGVjaywgb3B0aW9ucyk7CisgICAgUmVmUHRyPFN1YnJl
c291cmNlTG9hZGVyPiBsb2FkZXIgPSBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKGZyYW1lLCBj
bGllbnQsIHJlcXVlc3QsIG9wdGlvbnMpOwogICAgIGlmIChsb2FkZXIpCiAgICAgICAgIHNjaGVk
dWxlTG9hZChsb2FkZXIuZ2V0KCksIHByaW9yaXR5KTsKICAgICByZXR1cm4gbG9hZGVyLnJlbGVh
c2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmgJKHJldmlzaW9uIDk0NDIxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZFNjaGVkdWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIFJl
c291cmNlTG9hZFNjaGVkdWxlciB7CiBwdWJsaWM6CiAgICAgZnJpZW5kIFJlc291cmNlTG9hZFNj
aGVkdWxlciogcmVzb3VyY2VMb2FkU2NoZWR1bGVyKCk7CiAKLSAgICBQYXNzUmVmUHRyPFN1YnJl
c291cmNlTG9hZGVyPiBzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmFtZSosIFN1YnJlc291cmNl
TG9hZGVyQ2xpZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VMb2FkUHJpb3Jp
dHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0eUxvdywgU2VjdXJpdHlDaGVja1BvbGljeSA9IERvU2Vj
dXJpdHlDaGVjaywgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiA9IFJlc291cmNlTG9hZGVy
T3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIEFsbG93U3Rv
cmVkQ3JlZGVudGlhbHMpKTsKKyAgICBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBzY2hl
ZHVsZVN1YnJlc291cmNlTG9hZChGcmFtZSosIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQ
cmlvcml0eUxvdywgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiA9IFJlc291cmNlTG9hZGVy
T3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIEFsbG93U3Rv
cmVkQ3JlZGVudGlhbHMsIERvU2VjdXJpdHlDaGVjaykpOwogICAgIFBhc3NSZWZQdHI8TmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZChGcmFtZSosIE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7
CiAgICAgdm9pZCBhZGRNYWluUmVzb3VyY2VMb2FkKFJlc291cmNlTG9hZGVyKik7CiAgICAgdm9p
ZCByZW1vdmUoUmVzb3VyY2VMb2FkZXIqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gOTQ0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAj
aW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgog
CkBAIC0xMTgsNiArMTE5LDE4IEBAIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmluaXQoY29uc3QgUmVz
b3VyY2UKICAgICAKICAgICBSZXNvdXJjZVJlcXVlc3QgY2xpZW50UmVxdWVzdChyKTsKICAgICAK
KyAgICBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIgPSBtX2ZyYW1lLT5sb2FkZXIoKTsKKyAgICBp
ZiAobV9vcHRpb25zLnNlY3VyaXR5Q2hlY2sgPT0gRG9TZWN1cml0eUNoZWNrICYmIChmcmFtZUxv
YWRlci0+c3RhdGUoKSA9PSBGcmFtZVN0YXRlUHJvdmlzaW9uYWwgfHwgIWZyYW1lTG9hZGVyLT5h
Y3RpdmVEb2N1bWVudExvYWRlcigpIHx8IGZyYW1lTG9hZGVyLT5hY3RpdmVEb2N1bWVudExvYWRl
cigpLT5pc1N0b3BwaW5nKCkpKSB7CisgICAgICAgIGNhbmNlbCgpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIAorICAgIGlmIChtX29wdGlvbnMuc2VjdXJpdHlDaGVjayA9PSBE
b1NlY3VyaXR5Q2hlY2sgJiYgIW1fZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkt
PmNhbkRpc3BsYXkoY2xpZW50UmVxdWVzdC51cmwoKSkpIHsKKyAgICAgICAgY2FuY2VsKCk7Cisg
ICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQobV9mcmFtZS5nZXQoKSwg
Y2xpZW50UmVxdWVzdC51cmwoKS5zdHJpbmcoKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI2MzkxCiAgICAgLy8gVGhlIHZhcmlvdXMgcGx1Zy1pbiBpbXBsZW1lbnRhdGlvbnMgY2FsbCBk
aXJlY3RseSB0byBSZXNvdXJjZUxvYWRlcjo6bG9hZCgpIGluc3RlYWQgb2YgcGlwaW5nIHJlcXVl
c3RzCiAgICAgLy8gdGhyb3VnaCBGcmFtZUxvYWRlci4gQXMgYSByZXN1bHQsIHRoZXkgbWlzcyB0
aGUgRnJhbWVMb2FkZXI6OmFkZEV4dHJhRmllbGRzVG9SZXF1ZXN0KCkgc3RlcCB3aGljaCBzZXRz
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5o
CShyZXZpc2lvbiA5NDQyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ck9wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDksMTQgKzQ5LDIwIEBAIGVudW0gRGF0YUJ1
ZmZlcmluZ1BvbGljeSB7CiAgICAgQnVmZmVyRGF0YSwKICAgICBEb05vdEJ1ZmZlckRhdGEKIH07
CisgICAgCitlbnVtIFNlY3VyaXR5Q2hlY2tQb2xpY3kgeworICAgIFNraXBTZWN1cml0eUNoZWNr
LAorICAgIERvU2VjdXJpdHlDaGVjaworfTsKIAogc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9u
cyB7Ci0gICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zKCkgOiBzZW5kTG9hZENhbGxiYWNrcyhEb05v
dFNlbmRDYWxsYmFja3MpLCBzbmlmZkNvbnRlbnQoRG9Ob3RTbmlmZkNvbnRlbnQpLCBzaG91bGRC
dWZmZXJEYXRhKEJ1ZmZlckRhdGEpLCBhbGxvd0NyZWRlbnRpYWxzKERvTm90QWxsb3dTdG9yZWRD
cmVkZW50aWFscykgeyB9Ci0gICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja1Bv
bGljeSBzZW5kTG9hZENhbGxiYWNrc0FyZywgQ29udGVudFNuaWZmaW5nUG9saWN5IHNuaWZmQ29u
dGVudEFyZywgRGF0YUJ1ZmZlcmluZ1BvbGljeSBzaG91bGRCdWZmZXJEYXRhQXJnLCBTdG9yZWRD
cmVkZW50aWFscyBhbGxvd0NyZWRlbnRpYWxzQXJnKSA6IHNlbmRMb2FkQ2FsbGJhY2tzKHNlbmRM
b2FkQ2FsbGJhY2tzQXJnKSwgc25pZmZDb250ZW50KHNuaWZmQ29udGVudEFyZyksIHNob3VsZEJ1
ZmZlckRhdGEoc2hvdWxkQnVmZmVyRGF0YUFyZyksIGFsbG93Q3JlZGVudGlhbHMoYWxsb3dDcmVk
ZW50aWFsc0FyZykgeyB9CisgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zKCkgOiBzZW5kTG9hZENh
bGxiYWNrcyhEb05vdFNlbmRDYWxsYmFja3MpLCBzbmlmZkNvbnRlbnQoRG9Ob3RTbmlmZkNvbnRl
bnQpLCBzaG91bGRCdWZmZXJEYXRhKEJ1ZmZlckRhdGEpLCBhbGxvd0NyZWRlbnRpYWxzKERvTm90
QWxsb3dTdG9yZWRDcmVkZW50aWFscyksIHNlY3VyaXR5Q2hlY2soRG9TZWN1cml0eUNoZWNrKSB7
IH0KKyAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxiYWNrUG9saWN5IHNlbmRMb2Fk
Q2FsbGJhY2tzLCBDb250ZW50U25pZmZpbmdQb2xpY3kgc25pZmZDb250ZW50LCBEYXRhQnVmZmVy
aW5nUG9saWN5IHNob3VsZEJ1ZmZlckRhdGEsIFN0b3JlZENyZWRlbnRpYWxzIGFsbG93Q3JlZGVu
dGlhbHMsIFNlY3VyaXR5Q2hlY2tQb2xpY3kgc2VjdXJpdHlDaGVjaykgOiBzZW5kTG9hZENhbGxi
YWNrcyhzZW5kTG9hZENhbGxiYWNrcyksIHNuaWZmQ29udGVudChzbmlmZkNvbnRlbnQpLCBzaG91
bGRCdWZmZXJEYXRhKHNob3VsZEJ1ZmZlckRhdGEpLCBhbGxvd0NyZWRlbnRpYWxzKGFsbG93Q3Jl
ZGVudGlhbHMpLCBzZWN1cml0eUNoZWNrKHNlY3VyaXR5Q2hlY2spIHsgfQogICAgIFNlbmRDYWxs
YmFja1BvbGljeSBzZW5kTG9hZENhbGxiYWNrczsKICAgICBDb250ZW50U25pZmZpbmdQb2xpY3kg
c25pZmZDb250ZW50OwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgc2hvdWxkQnVmZmVyRGF0YTsK
ICAgICBTdG9yZWRDcmVkZW50aWFscyBhbGxvd0NyZWRlbnRpYWxzOyAvLyBXaGV0aGVyIEhUVFAg
Y3JlZGVudGlhbHMgYW5kIGNvb2tpZXMgYXJlIHNlbnQgd2l0aCB0aGUgcmVxdWVzdC4KKyAgICBT
ZWN1cml0eUNoZWNrUG9saWN5IHNlY3VyaXR5Q2hlY2s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwCShyZXZpc2lvbiA5NDQyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDIyICs2MSwxNCBAQCBTdWJyZXNv
dXJjZUxvYWRlcjo6flN1YnJlc291cmNlTG9hZGVyKCkKICNlbmRpZgogfQogCi1QYXNzUmVmUHRy
PFN1YnJlc291cmNlTG9hZGVyPiBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKEZyYW1lKiBmcmFt
ZSwgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBTZWN1cml0eUNoZWNrUG9saWN5IHNlY3VyaXR5Q2hlY2ssIGNvbnN0IFJlc291
cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKK1Bhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+
IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBTdWJyZXNvdXJjZUxvYWRl
ckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJl
c291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoIWZyYW1lKQogICAgICAg
ICByZXR1cm4gMDsKIAogICAgIEZyYW1lTG9hZGVyKiBmbCA9IGZyYW1lLT5sb2FkZXIoKTsKLSAg
ICBpZiAoc2VjdXJpdHlDaGVjayA9PSBEb1NlY3VyaXR5Q2hlY2sgJiYgKGZsLT5zdGF0ZSgpID09
IEZyYW1lU3RhdGVQcm92aXNpb25hbCB8fCAhZmwtPmFjdGl2ZURvY3VtZW50TG9hZGVyKCkgfHwg
ZmwtPmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmlzU3RvcHBpbmcoKSkpCi0gICAgICAgIHJldHVy
biAwOwotCiAgICAgUmVzb3VyY2VSZXF1ZXN0IG5ld1JlcXVlc3QgPSByZXF1ZXN0OwogCi0gICAg
aWYgKHNlY3VyaXR5Q2hlY2sgPT0gRG9TZWN1cml0eUNoZWNrICYmICFmcmFtZS0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheShyZXF1ZXN0LnVybCgpKSkgewotICAgICAg
ICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKGZyYW1lLCByZXF1ZXN0LnVybCgp
LnN0cmluZygpKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCiAgICAgLy8gTm90ZTogV2Ug
c2tpcCB0aGUgQ29udGVudC1TZWN1cml0eS1Qb2xpY3kgY2hlY2sgaGVyZSBiZWNhdXNlIHdlIGNo
ZWNrCiAgICAgLy8gdGhlIENvbnRlbnQtU2VjdXJpdHktUG9saWN5IGF0IHRoZSBDYWNoZWRSZXNv
dXJjZUxvYWRlciBsYXllciBzbyB3ZSBjYW4KICAgICAvLyBoYW5kbGUgZGlmZmVyZW50IHJlc291
cmNlIHR5cGVzIGRpZmZlcmVudGx5LgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDk0NDIxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIAogICAgIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyIDogcHVi
bGljIFJlc291cmNlTG9hZGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFN1YnJlc291cmNlTG9hZGVyPiBjcmVhdGUoRnJhbWUqLCBTdWJyZXNvdXJjZUxvYWRlckNs
aWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFNlY3VyaXR5Q2hlY2tQb2xpY3ksIGNvbnN0
IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdWJy
ZXNvdXJjZUxvYWRlcj4gY3JlYXRlKEZyYW1lKiwgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQqLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKIAog
ICAgICAgICB2b2lkIGNsZWFyQ2xpZW50KCkgeyBtX2NsaWVudCA9IDA7IH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAkocmV2aXNpb24gOTQ0MjEp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTcwLDEwICs3MCwxMSBAQCBDYWNoZWRGb250Ojp+Q2FjaGVkRm9udCgpCiAjZW5k
aWYKIH0KIAotdm9pZCBDYWNoZWRGb250Ojpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKikKK3Zv
aWQgQ2FjaGVkRm9udDo6bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNl
TG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICAvLyBEb24ndCBsb2FkIHRoZSBmaWxlIHll
dC4gIFdhaXQgZm9yIGFuIGFjY2VzcyBiZWZvcmUgdHJpZ2dlcmluZyB0aGUgbG9hZC4KICAgICBz
ZXRMb2FkaW5nKHRydWUpOworICAgIG1fb3B0aW9ucyA9IG9wdGlvbnM7CiB9CiAKIHZvaWQgQ2Fj
aGVkRm9udDo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50KiBjKQpAQCAtOTcsNyAr
OTgsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmJlZ2luTG9hZElmTmVlZGVkKENhY2hlCiB7CiAgICAg
aWYgKCFtX2xvYWRJbml0aWF0ZWQpIHsKICAgICAgICAgbV9sb2FkSW5pdGlhdGVkID0gdHJ1ZTsK
LSAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OmxvYWQoZGwpOworICAgICAgICBDYWNoZWRSZXNvdXJj
ZTo6bG9hZChkbCwgbV9vcHRpb25zKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAkocmV2aXNpb24gOTQ0MjEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0
OSw3IEBAIHB1YmxpYzoKICAgICBDYWNoZWRGb250KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwog
ICAgIHZpcnR1YWwgfkNhY2hlZEZvbnQoKTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZChD
YWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIpOworICAgIHZpcnR1YWwg
dm9pZCBsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRp
b25zJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xp
ZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIGRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmNwcAkocmV2aXNpb24gOTQ0MjEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSwxMCAr
ODEsMTAgQEAgdm9pZCBDYWNoZWRJbWFnZTo6ZGVjb2RlZERhdGFEZWxldGlvblRpbQogICAgIGRl
c3Ryb3lEZWNvZGVkRGF0YSgpOwogfQogCi12b2lkIENhY2hlZEltYWdlOjpsb2FkKENhY2hlZFJl
c291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlcikKK3ZvaWQgQ2FjaGVkSW1hZ2U6Omxv
YWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyLCBjb25zdCBSZXNv
dXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKCFjYWNoZWRSZXNvdXJjZUxv
YWRlciB8fCBjYWNoZWRSZXNvdXJjZUxvYWRlci0+YXV0b0xvYWRJbWFnZXMoKSkKLSAgICAgICAg
Q2FjaGVkUmVzb3VyY2U6OmxvYWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIsIHRydWUsIERvU2VjdXJp
dHlDaGVjayk7CisgICAgICAgIENhY2hlZFJlc291cmNlOjpsb2FkKGNhY2hlZFJlc291cmNlTG9h
ZGVyLCBvcHRpb25zKTsKICAgICBlbHNlCiAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgJKHJldmlzaW9u
IDk0NDIxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIENhY2hlZEltYWdlKElt
YWdlKik7CiAgICAgdmlydHVhbCB+Q2FjaGVkSW1hZ2UoKTsKICAgICAKLSAgICB2aXJ0dWFsIHZv
aWQgbG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIpOworICAg
IHZpcnR1YWwgdm9pZCBsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VM
b2FkZXJPcHRpb25zJik7CiAKICAgICBJbWFnZSogaW1hZ2UoKSBjb25zdDsgLy8gUmV0dXJucyB0
aGUgbnVsbEltYWdlKCkgaWYgdGhlIGltYWdlIGlzIG5vdCBhdmFpbGFibGUgeWV0LgogICAgIGJv
b2wgaGFzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlLmdldCgpOyB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHJldmlzaW9u
IDk0NDIxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTYsNyArOTYsNiBAQCBDYWNoZWRSZXNvdXJjZTo6Q2FjaGVk
UmVzb3VyY2UoY29uc3QgUmVzCiAgICAgLCBtX2xvYWRpbmcoZmFsc2UpCiAgICAgLCBtX3R5cGUo
dHlwZSkKICAgICAsIG1fc3RhdHVzKFBlbmRpbmcpCi0gICAgLCBtX29wdGlvbnMoU2VuZENhbGxi
YWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzKQog
I2lmbmRlZiBOREVCVUcKICAgICAsIG1fZGVsZXRlZChmYWxzZSkKICAgICAsIG1fbHJ1SW5kZXgo
MCkKQEAgLTEzMSwxMCArMTMwLDExIEBAIENhY2hlZFJlc291cmNlOjp+Q2FjaGVkUmVzb3VyY2Uo
KQogICAgICAgICBtX293bmluZ0NhY2hlZFJlc291cmNlTG9hZGVyLT5yZW1vdmVDYWNoZWRSZXNv
dXJjZSh0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6bG9hZChDYWNoZWRSZXNvdXJj
ZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIsIGJvb2wgaW5jcmVtZW50YWwsIFNlY3VyaXR5
Q2hlY2tQb2xpY3kgc2VjdXJpdHlDaGVjaykKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWQoQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyLCBjb25zdCBSZXNvdXJjZUxv
YWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7CisgICAgbV9vcHRpb25zID0gb3B0aW9uczsKICAgICBt
X2xvYWRpbmcgPSB0cnVlOwotICAgIG1fcmVxdWVzdCA9IENhY2hlZFJlc291cmNlUmVxdWVzdDo6
bG9hZChjYWNoZWRSZXNvdXJjZUxvYWRlciwgdGhpcywgaW5jcmVtZW50YWwsIHNlY3VyaXR5Q2hl
Y2ssIG1fb3B0aW9ucyk7CisgICAgbV9yZXF1ZXN0ID0gQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Ojps
b2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLCB0aGlzLCBvcHRpb25zKTsKICAgICBpZiAobV9yZXF1
ZXN0KSB7CiAgICAgICAgIG1fc3RhdHVzID0gUGVuZGluZzsKICAgICAgICAgY2FjaGVkUmVzb3Vy
Y2VMb2FkZXItPmluY3JlbWVudFJlcXVlc3RDb3VudCh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCShyZXZpc2lvbiA5NDQyMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC04NSw5ICs4NSw4IEBAIHB1YmxpYzoKIAogICAgIENhY2hlZFJlc291cmNlKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIFR5cGUpOwogICAgIHZpcnR1YWwgfkNhY2hlZFJlc291cmNlKCk7
Ci0gICAgCi0gICAgdmlydHVhbCB2b2lkIGxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hl
ZFJlc291cmNlTG9hZGVyKSAgeyBsb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLCBmYWxzZSwgRG9T
ZWN1cml0eUNoZWNrKTsgfQotICAgIHZvaWQgbG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciosIGJv
b2wgaW5jcmVtZW50YWwsIFNlY3VyaXR5Q2hlY2tQb2xpY3kpOworCisgICAgdmlydHVhbCB2b2lk
IGxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMm
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSB7IH0KICAg
ICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CkBA
IC0xOTQsOCArMTkzLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCB3YXNDYW5jZWxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdHVzID09IENhbmNlbGVkOyB9CiAgICAgYm9vbCBlcnJvck9jY3VycmVk
KCkgY29uc3QgeyByZXR1cm4gKG1fc3RhdHVzID09IExvYWRFcnJvciB8fCBtX3N0YXR1cyA9PSBE
ZWNvZGVFcnJvcik7IH0KLSAgICAKLSAgICB2b2lkIHNldFJlc291cmNlTG9hZGVyT3B0aW9ucyhj
b25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpIHsgbV9vcHRpb25zID0gb3B0aW9u
czsgfQorCiAgICAgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1
cm4gbV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IFNlbmRDYWxsYmFja3M7IH0KICAgICAK
ICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgeyB9CkBAIC0yNDIsNiArMjQw
LDcgQEAgcHJvdGVjdGVkOgogICAgIFJlc291cmNlUmVxdWVzdCBtX3Jlc291cmNlUmVxdWVzdDsK
ICAgICBTdHJpbmcgbV9hY2NlcHQ7CiAgICAgT3duUHRyPENhY2hlZFJlc291cmNlUmVxdWVzdD4g
bV9yZXF1ZXN0OworICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyBtX29wdGlvbnM7CiAgICAgUmVz
b3VyY2VMb2FkUHJpb3JpdHkgbV9sb2FkUHJpb3JpdHk7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNl
IG1fcmVzcG9uc2U7CkBAIC0yNzksOCArMjc4LDYgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBt
X3R5cGUgOiAzOyAvLyBUeXBlCiAgICAgdW5zaWduZWQgbV9zdGF0dXMgOiAzOyAvLyBTdGF0dXMK
IAotICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyBtX29wdGlvbnM7Ci0KICNpZm5kZWYgTkRFQlVH
CiAgICAgYm9vbCBtX2RlbGV0ZWQ7CiAgICAgdW5zaWduZWQgbV9scnVJbmRleDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcAkocmV2aXNpb24gOTQ0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4MywxMiBAQCBz
dGF0aWMgQ2FjaGVkUmVzb3VyY2UqIGNyZWF0ZVJlc291cmNlKENhCiAgICAgcmV0dXJuIDA7CiB9
CiAKK3N0YXRpYyBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIGRlZmF1bHRDYWNoZWRSZXNv
dXJjZU9wdGlvbnMoKQoreworICAgIHN0YXRpYyBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9u
cyhTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIEFsbG93U3RvcmVkQ3Jl
ZGVudGlhbHMsIERvU2VjdXJpdHlDaGVjayk7CisgICAgcmV0dXJuIG9wdGlvbnM7Cit9CisKIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpDYWNoZWRSZXNvdXJjZUxvYWRlcihEb2N1bWVudCogZG9jdW1l
bnQpCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQogICAgICwgbV9yZXF1ZXN0Q291bnQoMCkK
QEAgLTEzNywyMCArMTQzLDIwIEBAIENhY2hlZEltYWdlKiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
cmVxdWUKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgfQotICAgIENhY2hl
ZEltYWdlKiByZXNvdXJjZSA9IHN0YXRpY19jYXN0PENhY2hlZEltYWdlKj4ocmVxdWVzdFJlc291
cmNlKENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlLCByZXF1ZXN0LCBTdHJpbmcoKSkpOwor
ICAgIENhY2hlZEltYWdlKiByZXNvdXJjZSA9IHN0YXRpY19jYXN0PENhY2hlZEltYWdlKj4ocmVx
dWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlLCByZXF1ZXN0LCBTdHJp
bmcoKSwgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKSk7CiAgICAgaWYgKGF1dG9Mb2Fk
SW1hZ2VzKCkgJiYgcmVzb3VyY2UgJiYgcmVzb3VyY2UtPnN0aWxsTmVlZHNMb2FkKCkpCi0gICAg
ICAgIHJlc291cmNlLT5sb2FkKHRoaXMpOworICAgICAgICByZXNvdXJjZS0+bG9hZCh0aGlzLCBk
ZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpOwogICAgIHJldHVybiByZXNvdXJjZTsKIH0K
IAogQ2FjaGVkRm9udCogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RGb250KFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkRm9udCo+
KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlLCByZXF1ZXN0LCBT
dHJpbmcoKSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRGb250Kj4ocmVxdWVzdFJl
c291cmNlKENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2UsIHJlcXVlc3QsIFN0cmluZygpLCBk
ZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpKTsKIH0KIAogQ2FjaGVkQ1NTU3R5bGVTaGVl
dCogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RDU1NTdHlsZVNoZWV0KFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNvdXJjZUxvYWRQcmlvcml0
eSBwcmlvcml0eSkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkQ1NTU3R5bGVTaGVl
dCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldCwgcmVxdWVz
dCwgY2hhcnNldCwgcHJpb3JpdHkpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkQ1NT
U3R5bGVTaGVldCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVl
dCwgcmVxdWVzdCwgY2hhcnNldCwgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpLCBwcmlv
cml0eSkpOwogfQogCiBDYWNoZWRDU1NTdHlsZVNoZWV0KiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
cmVxdWVzdFVzZXJDU1NTdHlsZVNoZWV0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
U3RyaW5nJiBjaGFyc2V0KQpAQCAtMTcxLDggKzE3Nyw3IEBAIENhY2hlZENTU1N0eWxlU2hlZXQq
IENhY2hlZFJlc291cmNlTG9hZGUKICAgICBpZiAoIWluQ2FjaGUpCiAgICAgICAgIHVzZXJTaGVl
dC0+c2V0SW5DYWNoZSh0cnVlKTsKIAotICAgIHVzZXJTaGVldC0+c2V0UmVzb3VyY2VMb2FkZXJP
cHRpb25zKFJlc291cmNlTG9hZGVyT3B0aW9ucyhEb05vdFNlbmRDYWxsYmFja3MsIFNuaWZmQ29u
dGVudCwgQnVmZmVyRGF0YSwgQWxsb3dTdG9yZWRDcmVkZW50aWFscykpOwotICAgIHVzZXJTaGVl
dC0+bG9hZCh0aGlzLCAvKmluY3JlbWVudGFsKi8gZmFsc2UsIFNraXBTZWN1cml0eUNoZWNrKTsK
KyAgICB1c2VyU2hlZXQtPmxvYWQodGhpcywgUmVzb3VyY2VMb2FkZXJPcHRpb25zKERvTm90U2Vu
ZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRp
YWxzLCBTa2lwU2VjdXJpdHlDaGVjaykpOwogCiAgICAgaWYgKCFpbkNhY2hlKQogICAgICAgICB1
c2VyU2hlZXQtPnNldEluQ2FjaGUoZmFsc2UpOwpAQCAtMTgyLDEzICsxODcsMTMgQEAgQ2FjaGVk
Q1NTU3R5bGVTaGVldCogQ2FjaGVkUmVzb3VyY2VMb2FkZQogCiBDYWNoZWRTY3JpcHQqIENhY2hl
ZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0U2NyaXB0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgU3RyaW5nJiBjaGFyc2V0KQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRT
Y3JpcHQqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdCwgcmVxdWVzdCwg
Y2hhcnNldCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRTY3JpcHQqPihyZXF1ZXN0
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdCwgcmVxdWVzdCwgY2hhcnNldCwgZGVmYXVs
dENhY2hlZFJlc291cmNlT3B0aW9ucygpKSk7CiB9CiAKICNpZiBFTkFCTEUoWFNMVCkKIENhY2hl
ZFhTTFN0eWxlU2hlZXQqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0WFNMU3R5bGVTaGVl
dChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENh
Y2hlZFhTTFN0eWxlU2hlZXQqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlhTTFN0
eWxlU2hlZXQsIHJlcXVlc3QsIFN0cmluZygpKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENh
Y2hlZFhTTFN0eWxlU2hlZXQqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlhTTFN0
eWxlU2hlZXQsIHJlcXVlc3QsIFN0cmluZygpLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25z
KCkpKTsKIH0KICNlbmRpZgogCkBAIC0xOTcsNyArMjAyLDcgQEAgQ2FjaGVkUmVzb3VyY2UqIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpyZQogewogICAgIEFTU0VSVChmcmFtZSgpKTsKICAgICBBU1NF
UlQodHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoIHx8IHR5cGUgPT0gQ2FjaGVk
UmVzb3VyY2U6OkxpbmtQcmVyZW5kZXIgfHwgdHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6TGlua1N1
YnJlc291cmNlKTsKLSAgICByZXR1cm4gcmVxdWVzdFJlc291cmNlKHR5cGUsIHJlcXVlc3QsIFN0
cmluZygpLCBwcmlvcml0eSk7CisgICAgcmV0dXJuIHJlcXVlc3RSZXNvdXJjZSh0eXBlLCByZXF1
ZXN0LCBTdHJpbmcoKSwgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpLCBwcmlvcml0eSk7
CiB9CiAjZW5kaWYKIApAQCAtMzEyLDcgKzMxNyw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OmNhblJlcXVlc3QoQ2EKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotQ2FjaGVkUmVzb3VyY2Uq
IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5
cGUgdHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQs
IFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5LCBib29sIGZvclByZWxvYWQsIGNvbnN0IFJl
c291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKK0NhY2hlZFJlc291cmNlKiBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBSZXNv
dXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5
LCBib29sIGZvclByZWxvYWQpCiB7CiAgICAgS1VSTCB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAg
IApAQCAtMzUwLDcgKzM1NSw3IEBAIENhY2hlZFJlc291cmNlKiBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6cmUKICAgICAgICAgcmVzb3VyY2UgPSBsb2FkUmVzb3VyY2UodHlwZSwgcmVxdWVzdCwgY2hh
cnNldCwgcHJpb3JpdHksIG9wdGlvbnMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJldmFs
aWRhdGU6Ci0gICAgICAgIHJlc291cmNlID0gcmV2YWxpZGF0ZVJlc291cmNlKHJlc291cmNlLCBw
cmlvcml0eSk7CisgICAgICAgIHJlc291cmNlID0gcmV2YWxpZGF0ZVJlc291cmNlKHJlc291cmNl
LCBwcmlvcml0eSwgb3B0aW9ucyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVXNlOgogICAg
ICAgICBtZW1vcnlDYWNoZSgpLT5yZXNvdXJjZUFjY2Vzc2VkKHJlc291cmNlKTsKQEAgLTM2Nyw3
ICszNzIsNyBAQCBDYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlCiAgICAg
cmV0dXJuIHJlc291cmNlOwogfQogICAgIAotQ2FjaGVkUmVzb3VyY2UqIENhY2hlZFJlc291cmNl
TG9hZGVyOjpyZXZhbGlkYXRlUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBSZXNv
dXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSkKK0NhY2hlZFJlc291cmNlKiBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmV2YWxpZGF0ZVJlc291cmNlKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgUmVz
b3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHksIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYg
b3B0aW9ucykKIHsKICAgICBBU1NFUlQocmVzb3VyY2UpOwogICAgIEFTU0VSVChyZXNvdXJjZS0+
aW5DYWNoZSgpKTsKQEAgLTM4Nyw3ICszOTIsNyBAQCBDYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OnJlCiAgICAgbWVtb3J5Q2FjaGUoKS0+YWRkKG5ld1Jlc291cmNlKTsKICAg
ICAKICAgICBuZXdSZXNvdXJjZS0+c2V0TG9hZFByaW9yaXR5KHByaW9yaXR5KTsKLSAgICBuZXdS
ZXNvdXJjZS0+bG9hZCh0aGlzKTsKKyAgICBuZXdSZXNvdXJjZS0+bG9hZCh0aGlzLCBvcHRpb25z
KTsKIAogICAgIGlmICghdXJsUHJvdG9jb2xJc0RhdGEpCiAgICAgICAgIG1fdmFsaWRhdGVkVVJM
cy5hZGQodXJsKTsKQEAgLTQxMCw4ICs0MTUsNyBAQCBDYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OmxvCiAgICAgICAgIHJlc291cmNlLT5zZXRJbkNhY2hlKHRydWUpOwogICAg
IAogICAgIHJlc291cmNlLT5zZXRMb2FkUHJpb3JpdHkocHJpb3JpdHkpOwotICAgIHJlc291cmNl
LT5zZXRSZXNvdXJjZUxvYWRlck9wdGlvbnMob3B0aW9ucyk7Ci0gICAgcmVzb3VyY2UtPmxvYWQo
dGhpcyk7CisgICAgcmVzb3VyY2UtPmxvYWQodGhpcywgb3B0aW9ucyk7CiAgICAgCiAgICAgaWYg
KCFpbkNhY2hlKSB7CiAgICAgICAgIHJlc291cmNlLT5zZXRPd25pbmdDYWNoZWRSZXNvdXJjZUxv
YWRlcih0aGlzKTsKQEAgLTU0OSw3ICs1NTMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVy
OjpzZXRBdXRvTG9hZEltCiAgICAgICAgICAgICBDYWNoZWRJbWFnZSogaW1hZ2UgPSBjb25zdF9j
YXN0PENhY2hlZEltYWdlKj4oc3RhdGljX2Nhc3Q8Y29uc3QgQ2FjaGVkSW1hZ2UqPihyZXNvdXJj
ZSkpOwogCiAgICAgICAgICAgICBpZiAoaW1hZ2UtPnN0aWxsTmVlZHNMb2FkKCkpCi0gICAgICAg
ICAgICAgICAgaW1hZ2UtPmxvYWQodGhpcyk7CisgICAgICAgICAgICAgICAgaW1hZ2UtPmxvYWQo
dGhpcywgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKTsKICAgICAgICAgfQogICAgIH0K
IH0KQEAgLTY3OSw3ICs2ODMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0
UHJlbG9hCiAgICAgaWYgKHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdCB8fCB0eXBlID09
IENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0KQogICAgICAgICBlbmNvZGluZyA9IGNoYXJz
ZXQuaXNFbXB0eSgpID8gbV9kb2N1bWVudC0+Y2hhcnNldCgpIDogY2hhcnNldDsKIAotICAgIENh
Y2hlZFJlc291cmNlKiByZXNvdXJjZSA9IHJlcXVlc3RSZXNvdXJjZSh0eXBlLCByZXF1ZXN0LCBl
bmNvZGluZywgUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkLCB0cnVlKTsKKyAgICBDYWNo
ZWRSZXNvdXJjZSogcmVzb3VyY2UgPSByZXF1ZXN0UmVzb3VyY2UodHlwZSwgcmVxdWVzdCwgZW5j
b2RpbmcsIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSwgUmVzb3VyY2VMb2FkUHJpb3Jp
dHlVbnJlc29sdmVkLCB0cnVlKTsKICAgICBpZiAoIXJlc291cmNlIHx8IChtX3ByZWxvYWRzICYm
IG1fcHJlbG9hZHMtPmNvbnRhaW5zKHJlc291cmNlKSkpCiAgICAgICAgIHJldHVybjsKICAgICBy
ZXNvdXJjZS0+aW5jcmVhc2VQcmVsb2FkQ291bnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiA5NDQy
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDksOCArMTA5LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICAvLyBGSVhNRTogVGhlIGRlZmF1bHQgdmFsdWUgZm9yIFJlc291cmNlTG9hZGVyT3B0aW9ucyB3
aWxsIGFsd2F5cyBiZSB1c2VkIGN1cnJlbnRseS4KICAgICAvLyBJdCBpcyBwbHVtYmVkIGZvciBo
dHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTIyNSAuCi0gICAgQ2FjaGVk
UmVzb3VyY2UqIHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNvdXJjZUxvYWRQcmlvcml0eSA9IFJl
c291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCwgYm9vbCBpc1ByZWxvYWQgPSBmYWxzZSwgY29u
c3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiA9IFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2Fs
bGJhY2tzLCBTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMp
KTsKLSAgICBDYWNoZWRSZXNvdXJjZSogcmV2YWxpZGF0ZVJlc291cmNlKENhY2hlZFJlc291cmNl
KiwgUmVzb3VyY2VMb2FkUHJpb3JpdHkpOworICAgIENhY2hlZFJlc291cmNlKiByZXF1ZXN0UmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmlu
ZyYgY2hhcnNldCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgUmVzb3VyY2VMb2FkUHJp
b3JpdHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQsIGJvb2wgaXNQcmVsb2FkID0g
ZmFsc2UpOworICAgIENhY2hlZFJlc291cmNlKiByZXZhbGlkYXRlUmVzb3VyY2UoQ2FjaGVkUmVz
b3VyY2UqLCBSZXNvdXJjZUxvYWRQcmlvcml0eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25z
Jik7CiAgICAgQ2FjaGVkUmVzb3VyY2UqIGxvYWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlw
ZSwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNvdXJjZUxvYWRQ
cmlvcml0eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CiAgICAgdm9pZCByZXF1ZXN0
UHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Ry
aW5nJiBjaGFyc2V0KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAJKHJldmlzaW9uIDk0NDIxKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc0LDEwICs3NCw5IEBAIHN0YXRpYyBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdl
dFR5cGUgY2FjaGUKIH0KICNlbmRpZgogCi1DYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OkNhY2hlZFJl
c291cmNlUmVxdWVzdChDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIs
IENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgYm9vbCBpbmNyZW1lbnRhbCkKK0NhY2hlZFJlc291
cmNlUmVxdWVzdDo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0KENhY2hlZFJlc291cmNlTG9hZGVyKiBj
YWNoZWRSZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogICAgIDogbV9j
YWNoZWRSZXNvdXJjZUxvYWRlcihjYWNoZWRSZXNvdXJjZUxvYWRlcikKICAgICAsIG1fcmVzb3Vy
Y2UocmVzb3VyY2UpCi0gICAgLCBtX2luY3JlbWVudGFsKGluY3JlbWVudGFsKQogICAgICwgbV9t
dWx0aXBhcnQoZmFsc2UpCiAgICAgLCBtX2ZpbmlzaGluZyhmYWxzZSkKIHsKQEAgLTg3LDkgKzg2
LDkgQEAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Ojp+Q2FjaGVkUmVzb3VyY2VSZQogewogfQogCi1Q
YXNzT3duUHRyPENhY2hlZFJlc291cmNlUmVxdWVzdD4gQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Ojps
b2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVz
b3VyY2UqIHJlc291cmNlLCBib29sIGluY3JlbWVudGFsLCBTZWN1cml0eUNoZWNrUG9saWN5IHNl
Y3VyaXR5Q2hlY2ssIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKK1Bhc3NP
d25QdHI8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0PiBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmxvYWQo
Q2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAg
ICBPd25QdHI8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRQdHIobmV3IENh
Y2hlZFJlc291cmNlUmVxdWVzdChjYWNoZWRSZXNvdXJjZUxvYWRlciwgcmVzb3VyY2UsIGluY3Jl
bWVudGFsKSk7CisgICAgT3duUHRyPENhY2hlZFJlc291cmNlUmVxdWVzdD4gcmVxdWVzdCA9IGFk
b3B0UHRyKG5ldyBDYWNoZWRSZXNvdXJjZVJlcXVlc3QoY2FjaGVkUmVzb3VyY2VMb2FkZXIsIHJl
c291cmNlKSk7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0ID0gcmVzb3Vy
Y2UtPnJlc291cmNlUmVxdWVzdCgpOwogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQpAQCAtMTI0LDcg
KzEyMyw3IEBAIFBhc3NPd25QdHI8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0PiBDYWNoZWQKICAgICBS
ZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSA9IHJlc291cmNlLT5sb2FkUHJpb3JpdHkoKTsK
ICAgICByZXNvdXJjZVJlcXVlc3Quc2V0UHJpb3JpdHkocHJpb3JpdHkpOwogCi0gICAgUmVmUHRy
PFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2No
ZWR1bGVTdWJyZXNvdXJjZUxvYWQoY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCktPmZy
YW1lKCksIHJlcXVlc3QuZ2V0KCksIHJlc291cmNlUmVxdWVzdCwgcHJpb3JpdHksIHNlY3VyaXR5
Q2hlY2ssIG9wdGlvbnMpOworICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0g
cmVzb3VyY2VMb2FkU2NoZWR1bGVyKCktPnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKGNhY2hlZFJl
c291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5mcmFtZSgpLCByZXF1ZXN0LmdldCgpLCByZXNvdXJj
ZVJlcXVlc3QsIHByaW9yaXR5LCBvcHRpb25zKTsKICAgICBpZiAoIWxvYWRlciB8fCBsb2FkZXIt
PnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpIHsKICAgICAgICAgLy8gRklYTUU6IFdoYXQgaWYgcmVz
b3VyY2VzIGluIG90aGVyIGZyYW1lcyB3ZXJlIHdhaXRpbmcgZm9yIHRoaXMgcmV2YWxpZGF0aW9u
PwogICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2Fubm90IHN0YXJ0IGxvYWRpbmcgJyVz
JyIsIHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwpAQCAtMjcxLDcg
KzI3MCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpkaWRSZWNlaXZlRGEKICAgICAg
ICAgLy8gVGhlIHJlc291cmNlIGRhdGEgd2lsbCBjaGFuZ2UgYXMgdGhlIG5leHQgcGFydCBpcyBs
b2FkZWQsIHNvIHdlIG5lZWQgdG8gbWFrZSBhIGNvcHkuCiAgICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGNvcGllZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKICAg
ICAgICAgbV9yZXNvdXJjZS0+ZGF0YShjb3BpZWREYXRhLnJlbGVhc2UoKSwgdHJ1ZSk7Ci0gICAg
fSBlbHNlIGlmIChtX2luY3JlbWVudGFsKQorICAgIH0gZWxzZQogICAgICAgICBtX3Jlc291cmNl
LT5kYXRhKGxvYWRlci0+cmVzb3VyY2VEYXRhKCksIGZhbHNlKTsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaAko
cmV2aXNpb24gOTQ0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEzICs0MywxMyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgOiBwcml2YXRl
IFN1YnJlc291cmNlTG9hZGVyQ2xpZW50IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQ
YXNzT3duUHRyPENhY2hlZFJlc291cmNlUmVxdWVzdD4gbG9hZChDYWNoZWRSZXNvdXJjZUxvYWRl
ciosIENhY2hlZFJlc291cmNlKiwgYm9vbCBpbmNyZW1lbnRhbCwgU2VjdXJpdHlDaGVja1BvbGlj
eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CisgICAgICAgIHN0YXRpYyBQYXNzT3du
UHRyPENhY2hlZFJlc291cmNlUmVxdWVzdD4gbG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciosIENh
Y2hlZFJlc291cmNlKiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CiAgICAgICAgIH5D
YWNoZWRSZXNvdXJjZVJlcXVlc3QoKTsKIAogICAgICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciog
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFJlc291cmNlTG9h
ZGVyOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QoQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSosIGJvb2wgaW5jcmVtZW50YWwpOwor
ICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqLCBDYWNo
ZWRSZXNvdXJjZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFN1YnJl
c291cmNlTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFN1YnJlc291cmNlTG9h
ZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KTsKQEAgLTYx
LDcgKzYxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZWZQdHI8U3VicmVzb3Vy
Y2VMb2FkZXI+IG1fbG9hZGVyOwogICAgICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciogbV9jYWNo
ZWRSZXNvdXJjZUxvYWRlcjsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIG1fcmVzb3VyY2U7Ci0g
ICAgICAgIGJvb2wgbV9pbmNyZW1lbnRhbDsKICAgICAgICAgYm9vbCBtX211bHRpcGFydDsKICAg
ICAgICAgYm9vbCBtX2ZpbmlzaGluZzsKICAgICB9Owo=
</data>
<flag name="commit-queue"
          id="102509"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108175</attachid>
            <date>2011-09-21 10:23:31 -0700</date>
            <delta_ts>2011-09-26 12:57:50 -0700</delta_ts>
            <desc>Fix a couple of failing tests</desc>
            <filename>crload3.txt</filename>
            <type>text/plain</type>
            <size>30777</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1NjM1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEtMDktMjEgIE5hdGUgQ2hh
cGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBDbGVhbiB1cCBDYWNoZWRSZXNv
dXJjZTo6bG9hZCgpLiBDb2xsYXBzZSBpdHMKKyAgICAgICAgbG9naWMgaW50byBhIHNpbmdsZSBj
YWxsc2l0ZSwgdGFraW5nIGp1c3QgYQorICAgICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciBhbmQg
YSBSZXNvdXJjZUxvYWRlck9wdGlvbnMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY3NDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29p
dmlzdG8uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3RvciBvbmx5LgorCisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVy
L0ZyYW1lTG9hZGVyVHlwZXMuaDogTW92ZSBTZWN1cml0eUNoZWNrUG9saWN5IHRvIFJlc291cmNl
TG9hZGVyT3B0aW9ucy5oLgorICAgICAgICAqIGxvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHA6CisgICAg
ICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6CisgICAgICAgICogbG9hZGVy
L1Jlc291cmNlTG9hZFNjaGVkdWxlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHA6IEVuZm9yY2UgU2VjdXJpdHlDaGVja1BvbGljeSBoZXJlIGluc3RlYWQgb2YgU3VicmVz
b3VyY2VMb2FkZXIuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oOiBT
dG9yZSBTZWN1cml0eUNoZWNrUG9saWN5IG9uIFJlc291cmNlTG9hZGVyT3B0aW9ucy4KKyAgICAg
ICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVmYXVsdENhY2hl
ZFJlc291cmNlT3B0aW9ucyk6IERlZmluZSB0aGUgZGVmYXVsdCBSZXNvdXJjZUxvYWRlck9wdGlv
bnMgZm9yCisgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZSBsb2FkcyBoZXJlIGluc3RlYWQgb2Yg
YXMgYSBkZWZhdWx0IHBhcmFtZXRlciBvbiByZXF1ZXN0UmVzb3VyY2UoKS4KKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOiBSZW1vdmUgbV9pbmNyZW1lbnRhbCwgc2lu
Y2UgaXRzIHB1cnBvc2UKKyAgICAgICAgICAgIGlzIGFscmVhZHkgZW5mb3JjZWQgaW4gdGhlIGRh
dGEoKSBpbXBsZW1lbnRhdGlvbiBvZiBldmVyeSBDYWNoZWRSZXNvdXJjZSB0aGF0IGRvZXNuJ3Qg
d2FudAorICAgICAgICAgICAgaW5jcmVtZW50YWwgbG9hZHMuCisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5oOgorCiAyMDExLTA5LTIxICBQYXZlbCBGZWxkbWFu
ICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgbWlu
aW1hbCBlcnJvciBoYW5kbGluZyB0byB0aGUgRE9NIGJyZWFrcG9pbnRzLgpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaAkocmV2aXNpb24gOTU2
MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ5LDE0ICs0OSwyMCBAQAogICAgIEJ1ZmZlckRhdGEsCiAgICAgRG9O
b3RCdWZmZXJEYXRhCiB9OworICAgIAorZW51bSBTZWN1cml0eUNoZWNrUG9saWN5IHsKKyAgICBT
a2lwU2VjdXJpdHlDaGVjaywKKyAgICBEb1NlY3VyaXR5Q2hlY2sKK307CiAKIHN0cnVjdCBSZXNv
dXJjZUxvYWRlck9wdGlvbnMgewotICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucygpIDogc2VuZExv
YWRDYWxsYmFja3MoRG9Ob3RTZW5kQ2FsbGJhY2tzKSwgc25pZmZDb250ZW50KERvTm90U25pZmZD
b250ZW50KSwgc2hvdWxkQnVmZmVyRGF0YShCdWZmZXJEYXRhKSwgYWxsb3dDcmVkZW50aWFscyhE
b05vdEFsbG93U3RvcmVkQ3JlZGVudGlhbHMpIHsgfQotICAgIFJlc291cmNlTG9hZGVyT3B0aW9u
cyhTZW5kQ2FsbGJhY2tQb2xpY3kgc2VuZExvYWRDYWxsYmFja3NBcmcsIENvbnRlbnRTbmlmZmlu
Z1BvbGljeSBzbmlmZkNvbnRlbnRBcmcsIERhdGFCdWZmZXJpbmdQb2xpY3kgc2hvdWxkQnVmZmVy
RGF0YUFyZywgU3RvcmVkQ3JlZGVudGlhbHMgYWxsb3dDcmVkZW50aWFsc0FyZykgOiBzZW5kTG9h
ZENhbGxiYWNrcyhzZW5kTG9hZENhbGxiYWNrc0FyZyksIHNuaWZmQ29udGVudChzbmlmZkNvbnRl
bnRBcmcpLCBzaG91bGRCdWZmZXJEYXRhKHNob3VsZEJ1ZmZlckRhdGFBcmcpLCBhbGxvd0NyZWRl
bnRpYWxzKGFsbG93Q3JlZGVudGlhbHNBcmcpIHsgfQorICAgIFJlc291cmNlTG9hZGVyT3B0aW9u
cygpIDogc2VuZExvYWRDYWxsYmFja3MoRG9Ob3RTZW5kQ2FsbGJhY2tzKSwgc25pZmZDb250ZW50
KERvTm90U25pZmZDb250ZW50KSwgc2hvdWxkQnVmZmVyRGF0YShCdWZmZXJEYXRhKSwgYWxsb3dD
cmVkZW50aWFscyhEb05vdEFsbG93U3RvcmVkQ3JlZGVudGlhbHMpLCBzZWN1cml0eUNoZWNrKERv
U2VjdXJpdHlDaGVjaykgeyB9CisgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFj
a1BvbGljeSBzZW5kTG9hZENhbGxiYWNrcywgQ29udGVudFNuaWZmaW5nUG9saWN5IHNuaWZmQ29u
dGVudCwgRGF0YUJ1ZmZlcmluZ1BvbGljeSBzaG91bGRCdWZmZXJEYXRhLCBTdG9yZWRDcmVkZW50
aWFscyBhbGxvd0NyZWRlbnRpYWxzLCBTZWN1cml0eUNoZWNrUG9saWN5IHNlY3VyaXR5Q2hlY2sp
IDogc2VuZExvYWRDYWxsYmFja3Moc2VuZExvYWRDYWxsYmFja3MpLCBzbmlmZkNvbnRlbnQoc25p
ZmZDb250ZW50KSwgc2hvdWxkQnVmZmVyRGF0YShzaG91bGRCdWZmZXJEYXRhKSwgYWxsb3dDcmVk
ZW50aWFscyhhbGxvd0NyZWRlbnRpYWxzKSwgc2VjdXJpdHlDaGVjayhzZWN1cml0eUNoZWNrKSB7
IH0KICAgICBTZW5kQ2FsbGJhY2tQb2xpY3kgc2VuZExvYWRDYWxsYmFja3M7CiAgICAgQ29udGVu
dFNuaWZmaW5nUG9saWN5IHNuaWZmQ29udGVudDsKICAgICBEYXRhQnVmZmVyaW5nUG9saWN5IHNo
b3VsZEJ1ZmZlckRhdGE7CiAgICAgU3RvcmVkQ3JlZGVudGlhbHMgYWxsb3dDcmVkZW50aWFsczsg
Ly8gV2hldGhlciBIVFRQIGNyZWRlbnRpYWxzIGFuZCBjb29raWVzIGFyZSBzZW50IHdpdGggdGhl
IHJlcXVlc3QuCisgICAgU2VjdXJpdHlDaGVja1BvbGljeSBzZWN1cml0eUNoZWNrOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZSAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlclR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyVHlwZXMuaAkocmV2aXNpb24gOTU2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsMTEgKzEwMyw2IEBA
CiAgICAgICAgIFNhbmRib3hBbGwgPSAtMSAvLyBNYXNrIHdpdGggYWxsIGJpdHMgc2V0IHRvIDEu
CiAgICAgfTsKIAotICAgIGVudW0gU2VjdXJpdHlDaGVja1BvbGljeSB7Ci0gICAgICAgIFNraXBT
ZWN1cml0eUNoZWNrLAotICAgICAgICBEb1NlY3VyaXR5Q2hlY2sKLSAgICB9OwotCiAgICAgLy8g
UGFzc2VkIHRvIEZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZCgpIGFuZCBTY3JpcHRDb250cm9sbGVy
OjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKCkKICAgICAvLyB0byBjb250cm9sIHdoZXRoZXIsIGlu
IHRoZSBjYXNlIG9mIGEgSmF2YVNjcmlwdCBVUkwsIGV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoKSBz
aG91bGQKICAgICAvLyByZXBsYWNlIHRoZSBkb2N1bWVudC4gIEl0IGlzIGEgRklYTUUgdG8gZWxp
bWluYXRlIHRoaXMgZXh0cmEgcGFyYW1ldGVyIGZyb20KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAJKHJldmlzaW9uIDk1NjM1KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCwx
MCArNzAsMTEgQEAKICNlbmRpZgogfQogCi12b2lkIENhY2hlZEZvbnQ6OmxvYWQoQ2FjaGVkUmVz
b3VyY2VMb2FkZXIqKQordm9pZCBDYWNoZWRGb250Ojpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVy
KiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogewogICAgIC8vIERvbid0
IGxvYWQgdGhlIGZpbGUgeWV0LiAgV2FpdCBmb3IgYW4gYWNjZXNzIGJlZm9yZSB0cmlnZ2VyaW5n
IHRoZSBsb2FkLgogICAgIHNldExvYWRpbmcodHJ1ZSk7CisgICAgbV9vcHRpb25zID0gb3B0aW9u
czsKIH0KIAogdm9pZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQqIGMpCkBAIC05Nyw3ICs5OCw3IEBACiB7CiAgICAgaWYgKCFtX2xvYWRJbml0aWF0ZWQpIHsK
ICAgICAgICAgbV9sb2FkSW5pdGlhdGVkID0gdHJ1ZTsKLSAgICAgICAgQ2FjaGVkUmVzb3VyY2U6
OmxvYWQoZGwpOworICAgICAgICBDYWNoZWRSZXNvdXJjZTo6bG9hZChkbCwgbV9vcHRpb25zKTsK
ICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
aAkocmV2aXNpb24gOTU2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Rm9udC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBACiAgICAgQ2FjaGVkRm9udChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIH5DYWNoZWRGb250KCk7CiAgICAg
Ci0gICAgdmlydHVhbCB2b2lkIGxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291
cmNlTG9hZGVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlcios
IGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZEFk
ZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOwogICAgIHZpcnR1YWwgdm9pZCBkYXRhKFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5jcHAJKHJldmlzaW9uIDk1NjM1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsMTIg
QEAKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9u
cyYgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpCit7CisgICAgc3RhdGljIFJlc291cmNl
TG9hZGVyT3B0aW9ucyBvcHRpb25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVy
RGF0YSwgQWxsb3dTdG9yZWRDcmVkZW50aWFscywgRG9TZWN1cml0eUNoZWNrKTsKKyAgICByZXR1
cm4gb3B0aW9uczsKK30KKwogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OkNhY2hlZFJlc291cmNlTG9h
ZGVyKERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAg
LCBtX3JlcXVlc3RDb3VudCgwKQpAQCAtMTMzLDIwICsxMzksMjAgQEAKICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICB9CiAgICAgfQotICAgIENhY2hlZEltYWdlKiByZXNvdXJjZSA9IHN0
YXRpY19jYXN0PENhY2hlZEltYWdlKj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpJ
bWFnZVJlc291cmNlLCByZXF1ZXN0LCBTdHJpbmcoKSkpOworICAgIENhY2hlZEltYWdlKiByZXNv
dXJjZSA9IHN0YXRpY19jYXN0PENhY2hlZEltYWdlKj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJl
c291cmNlOjpJbWFnZVJlc291cmNlLCByZXF1ZXN0LCBTdHJpbmcoKSwgZGVmYXVsdENhY2hlZFJl
c291cmNlT3B0aW9ucygpKSk7CiAgICAgaWYgKGF1dG9Mb2FkSW1hZ2VzKCkgJiYgcmVzb3VyY2Ug
JiYgcmVzb3VyY2UtPnN0aWxsTmVlZHNMb2FkKCkpCi0gICAgICAgIHJlc291cmNlLT5sb2FkKHRo
aXMpOworICAgICAgICByZXNvdXJjZS0+bG9hZCh0aGlzLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VP
cHRpb25zKCkpOwogICAgIHJldHVybiByZXNvdXJjZTsKIH0KIAogQ2FjaGVkRm9udCogQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RGb250KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkRm9udCo+KHJlcXVlc3RSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlLCByZXF1ZXN0LCBTdHJpbmcoKSkpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxDYWNoZWRGb250Kj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNl
OjpGb250UmVzb3VyY2UsIHJlcXVlc3QsIFN0cmluZygpLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VP
cHRpb25zKCkpKTsKIH0KIAogQ2FjaGVkQ1NTU3R5bGVTaGVldCogQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnJlcXVlc3RDU1NTdHlsZVNoZWV0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
U3RyaW5nJiBjaGFyc2V0LCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSkKIHsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkQ1NTU3R5bGVTaGVldCo+KHJlcXVlc3RSZXNvdXJjZShD
YWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldCwgcmVxdWVzdCwgY2hhcnNldCwgcHJpb3JpdHkp
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkQ1NTU3R5bGVTaGVldCo+KHJlcXVlc3RS
ZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldCwgcmVxdWVzdCwgY2hhcnNldCwg
ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpLCBwcmlvcml0eSkpOwogfQogCiBDYWNoZWRD
U1NTdHlsZVNoZWV0KiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFVzZXJDU1NTdHlsZVNo
ZWV0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KQpAQCAt
MTY3LDggKzE3Myw3IEBACiAgICAgaWYgKCFpbkNhY2hlKQogICAgICAgICB1c2VyU2hlZXQtPnNl
dEluQ2FjaGUodHJ1ZSk7CiAKLSAgICB1c2VyU2hlZXQtPnNldFJlc291cmNlTG9hZGVyT3B0aW9u
cyhSZXNvdXJjZUxvYWRlck9wdGlvbnMoRG9Ob3RTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQs
IEJ1ZmZlckRhdGEsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMpKTsKLSAgICB1c2VyU2hlZXQtPmxv
YWQodGhpcywgLyppbmNyZW1lbnRhbCovIGZhbHNlLCBTa2lwU2VjdXJpdHlDaGVjayk7CisgICAg
dXNlclNoZWV0LT5sb2FkKHRoaXMsIFJlc291cmNlTG9hZGVyT3B0aW9ucyhEb05vdFNlbmRDYWxs
YmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgQWxsb3dTdG9yZWRDcmVkZW50aWFscywg
U2tpcFNlY3VyaXR5Q2hlY2spKTsKIAogICAgIGlmICghaW5DYWNoZSkKICAgICAgICAgdXNlclNo
ZWV0LT5zZXRJbkNhY2hlKGZhbHNlKTsKQEAgLTE3OCwxMyArMTgzLDEzIEBACiAKIENhY2hlZFNj
cmlwdCogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RTY3JpcHQoUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PENhY2hlZFNjcmlwdCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6U2NyaXB0
LCByZXF1ZXN0LCBjaGFyc2V0KSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZFNjcmlw
dCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6U2NyaXB0LCByZXF1ZXN0LCBjaGFy
c2V0LCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpKTsKIH0KIAogI2lmIEVOQUJMRShY
U0xUKQogQ2FjaGVkWFNMU3R5bGVTaGVldCogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RY
U0xTdHlsZVNoZWV0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Q2FjaGVkWFNMU3R5bGVTaGVldCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZTo6WFNMU3R5bGVTaGVldCwgcmVxdWVzdCwgU3RyaW5nKCkpKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Q2FjaGVkWFNMU3R5bGVTaGVldCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZTo6WFNMU3R5bGVTaGVldCwgcmVxdWVzdCwgU3RyaW5nKCksIGRlZmF1bHRDYWNoZWRSZXNv
dXJjZU9wdGlvbnMoKSkpOwogfQogI2VuZGlmCiAKQEAgLTE5Myw3ICsxOTgsNyBAQAogewogICAg
IEFTU0VSVChmcmFtZSgpKTsKICAgICBBU1NFUlQodHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6TGlu
a1ByZWZldGNoIHx8IHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVyZW5kZXIgfHwgdHlw
ZSA9PSBDYWNoZWRSZXNvdXJjZTo6TGlua1N1YnJlc291cmNlKTsKLSAgICByZXR1cm4gcmVxdWVz
dFJlc291cmNlKHR5cGUsIHJlcXVlc3QsIFN0cmluZygpLCBwcmlvcml0eSk7CisgICAgcmV0dXJu
IHJlcXVlc3RSZXNvdXJjZSh0eXBlLCByZXF1ZXN0LCBTdHJpbmcoKSwgZGVmYXVsdENhY2hlZFJl
c291cmNlT3B0aW9ucygpLCBwcmlvcml0eSk7CiB9CiAjZW5kaWYKIApAQCAtMzE0LDcgKzMxOSw3
IEBACiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUNhY2hlZFJlc291cmNlKiBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNvdXJjZUxvYWRQ
cmlvcml0eSBwcmlvcml0eSwgYm9vbCBmb3JQcmVsb2FkLCBjb25zdCBSZXNvdXJjZUxvYWRlck9w
dGlvbnMmIG9wdGlvbnMpCitDYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJl
cXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRp
b25zJiBvcHRpb25zLCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSwgYm9vbCBmb3JQcmVs
b2FkKQogewogICAgIEtVUkwgdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICAKQEAgLTM1Miw3ICsz
NTcsNyBAQAogICAgICAgICByZXNvdXJjZSA9IGxvYWRSZXNvdXJjZSh0eXBlLCByZXF1ZXN0LCBj
aGFyc2V0LCBwcmlvcml0eSwgb3B0aW9ucyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmV2
YWxpZGF0ZToKLSAgICAgICAgcmVzb3VyY2UgPSByZXZhbGlkYXRlUmVzb3VyY2UocmVzb3VyY2Us
IHByaW9yaXR5KTsKKyAgICAgICAgcmVzb3VyY2UgPSByZXZhbGlkYXRlUmVzb3VyY2UocmVzb3Vy
Y2UsIHByaW9yaXR5LCBvcHRpb25zKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBVc2U6CiAg
ICAgICAgIG1lbW9yeUNhY2hlKCktPnJlc291cmNlQWNjZXNzZWQocmVzb3VyY2UpOwpAQCAtMzY5
LDcgKzM3NCw3IEBACiAgICAgcmV0dXJuIHJlc291cmNlOwogfQogICAgIAotQ2FjaGVkUmVzb3Vy
Y2UqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXZhbGlkYXRlUmVzb3VyY2UoQ2FjaGVkUmVzb3Vy
Y2UqIHJlc291cmNlLCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSkKK0NhY2hlZFJlc291
cmNlKiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmV2YWxpZGF0ZVJlc291cmNlKENhY2hlZFJlc291
cmNlKiByZXNvdXJjZSwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHksIGNvbnN0IFJlc291
cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBBU1NFUlQocmVzb3VyY2UpOwogICAg
IEFTU0VSVChyZXNvdXJjZS0+aW5DYWNoZSgpKTsKQEAgLTM4OSw3ICszOTQsNyBAQAogICAgIG1l
bW9yeUNhY2hlKCktPmFkZChuZXdSZXNvdXJjZSk7CiAgICAgCiAgICAgbmV3UmVzb3VyY2UtPnNl
dExvYWRQcmlvcml0eShwcmlvcml0eSk7Ci0gICAgbmV3UmVzb3VyY2UtPmxvYWQodGhpcyk7Cisg
ICAgbmV3UmVzb3VyY2UtPmxvYWQodGhpcywgb3B0aW9ucyk7CiAKICAgICBpZiAoIXVybFByb3Rv
Y29sSXNEYXRhKQogICAgICAgICBtX3ZhbGlkYXRlZFVSTHMuYWRkKHVybCk7CkBAIC00MTIsOCAr
NDE3LDcgQEAKICAgICAgICAgcmVzb3VyY2UtPnNldEluQ2FjaGUodHJ1ZSk7CiAgICAgCiAgICAg
cmVzb3VyY2UtPnNldExvYWRQcmlvcml0eShwcmlvcml0eSk7Ci0gICAgcmVzb3VyY2UtPnNldFJl
c291cmNlTG9hZGVyT3B0aW9ucyhvcHRpb25zKTsKLSAgICByZXNvdXJjZS0+bG9hZCh0aGlzKTsK
KyAgICByZXNvdXJjZS0+bG9hZCh0aGlzLCBvcHRpb25zKTsKICAgICAKICAgICBpZiAoIWluQ2Fj
aGUpIHsKICAgICAgICAgcmVzb3VyY2UtPnNldE93bmluZ0NhY2hlZFJlc291cmNlTG9hZGVyKHRo
aXMpOwpAQCAtNTUxLDcgKzU1NSw3IEBACiAgICAgICAgICAgICBDYWNoZWRJbWFnZSogaW1hZ2Ug
PSBjb25zdF9jYXN0PENhY2hlZEltYWdlKj4oc3RhdGljX2Nhc3Q8Y29uc3QgQ2FjaGVkSW1hZ2Uq
PihyZXNvdXJjZSkpOwogCiAgICAgICAgICAgICBpZiAoaW1hZ2UtPnN0aWxsTmVlZHNMb2FkKCkp
Ci0gICAgICAgICAgICAgICAgaW1hZ2UtPmxvYWQodGhpcyk7CisgICAgICAgICAgICAgICAgaW1h
Z2UtPmxvYWQodGhpcywgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKTsKICAgICAgICAg
fQogICAgIH0KIH0KQEAgLTY4MSw3ICs2ODUsNyBAQAogICAgIGlmICh0eXBlID09IENhY2hlZFJl
c291cmNlOjpTY3JpcHQgfHwgdHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldCkK
ICAgICAgICAgZW5jb2RpbmcgPSBjaGFyc2V0LmlzRW1wdHkoKSA/IG1fZG9jdW1lbnQtPmNoYXJz
ZXQoKSA6IGNoYXJzZXQ7CiAKLSAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSByZXF1ZXN0
UmVzb3VyY2UodHlwZSwgcmVxdWVzdCwgZW5jb2RpbmcsIFJlc291cmNlTG9hZFByaW9yaXR5VW5y
ZXNvbHZlZCwgdHJ1ZSk7CisgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gcmVxdWVzdFJl
c291cmNlKHR5cGUsIHJlcXVlc3QsIGVuY29kaW5nLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRp
b25zKCksIFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCwgdHJ1ZSk7CiAgICAgaWYgKCFy
ZXNvdXJjZSB8fCAobV9wcmVsb2FkcyAmJiBtX3ByZWxvYWRzLT5jb250YWlucyhyZXNvdXJjZSkp
KQogICAgICAgICByZXR1cm47CiAgICAgcmVzb3VyY2UtPmluY3JlYXNlUHJlbG9hZENvdW50KCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHJl
dmlzaW9uIDk1NjM1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsMTAgKzgxLDEwIEBACiAgICAgZGVzdHJveURlY29k
ZWREYXRhKCk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKQordm9pZCBDYWNoZWRJbWFnZTo6bG9hZChDYWNoZWRS
ZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIsIGNvbnN0IFJlc291cmNlTG9hZGVy
T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoIWNhY2hlZFJlc291cmNlTG9hZGVyIHx8IGNh
Y2hlZFJlc291cmNlTG9hZGVyLT5hdXRvTG9hZEltYWdlcygpKQotICAgICAgICBDYWNoZWRSZXNv
dXJjZTo6bG9hZChjYWNoZWRSZXNvdXJjZUxvYWRlciwgdHJ1ZSwgRG9TZWN1cml0eUNoZWNrKTsK
KyAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OmxvYWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIsIG9wdGlv
bnMpOwogICAgIGVsc2UKICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAko
cmV2aXNpb24gOTU2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDggKzEwOSw4IEBACiBwcml2YXRl
OgogICAgIC8vIEZJWE1FOiBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgUmVzb3VyY2VMb2FkZXJPcHRp
b25zIHdpbGwgYWx3YXlzIGJlIHVzZWQgY3VycmVudGx5LgogICAgIC8vIEl0IGlzIHBsdW1iZWQg
Zm9yIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMjI1IC4KLSAgICBD
YWNoZWRSZXNvdXJjZSogcmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlLCBSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIFJlc291cmNlTG9hZFByaW9yaXR5
ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkLCBib29sIGlzUHJlbG9hZCA9IGZhbHNl
LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmID0gUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNl
bmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgQWxsb3dTdG9yZWRDcmVkZW50
aWFscykpOwotICAgIENhY2hlZFJlc291cmNlKiByZXZhbGlkYXRlUmVzb3VyY2UoQ2FjaGVkUmVz
b3VyY2UqLCBSZXNvdXJjZUxvYWRQcmlvcml0eSk7CisgICAgQ2FjaGVkUmVzb3VyY2UqIHJlcXVl
c3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
U3RyaW5nJiBjaGFyc2V0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBSZXNvdXJjZUxv
YWRQcmlvcml0eSA9IFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCwgYm9vbCBpc1ByZWxv
YWQgPSBmYWxzZSk7CisgICAgQ2FjaGVkUmVzb3VyY2UqIHJldmFsaWRhdGVSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZSosIFJlc291cmNlTG9hZFByaW9yaXR5LCBjb25zdCBSZXNvdXJjZUxvYWRlck9w
dGlvbnMmKTsKICAgICBDYWNoZWRSZXNvdXJjZSogbG9hZFJlc291cmNlKENhY2hlZFJlc291cmNl
OjpUeXBlLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIFJlc291cmNl
TG9hZFByaW9yaXR5LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKICAgICB2b2lkIHJl
cXVlc3RQcmVsb2FkKENhY2hlZFJlc291cmNlOjpUeXBlLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBTdHJpbmcmIGNoYXJzZXQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuaAkocmV2aXNpb24gOTU2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQAogICAg
IENhY2hlZEltYWdlKEltYWdlKik7CiAgICAgdmlydHVhbCB+Q2FjaGVkSW1hZ2UoKTsKICAgICAK
LSAgICB2aXJ0dWFsIHZvaWQgbG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3Vy
Y2VMb2FkZXIpOworICAgIHZpcnR1YWwgdm9pZCBsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiwg
Y29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CiAKICAgICBJbWFnZSogaW1hZ2UoKSBjb25z
dDsgLy8gUmV0dXJucyB0aGUgbnVsbEltYWdlKCkgaWYgdGhlIGltYWdlIGlzIG5vdCBhdmFpbGFi
bGUgeWV0LgogICAgIGJvb2wgaGFzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlLmdldCgp
OyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAJKHJldmlzaW9uIDk1NjM1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsNyArOTYsNiBAQAogICAgICwg
bV9sb2FkaW5nKGZhbHNlKQogICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3N0YXR1cyhQZW5k
aW5nKQotICAgICwgbV9vcHRpb25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVy
RGF0YSwgQWxsb3dTdG9yZWRDcmVkZW50aWFscykKICNpZm5kZWYgTkRFQlVHCiAgICAgLCBtX2Rl
bGV0ZWQoZmFsc2UpCiAgICAgLCBtX2xydUluZGV4KDApCkBAIC0xMzEsMTAgKzEzMCwxMSBAQAog
ICAgICAgICBtX293bmluZ0NhY2hlZFJlc291cmNlTG9hZGVyLT5yZW1vdmVDYWNoZWRSZXNvdXJj
ZSh0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6bG9hZChDYWNoZWRSZXNvdXJjZUxv
YWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIsIGJvb2wgaW5jcmVtZW50YWwsIFNlY3VyaXR5Q2hl
Y2tQb2xpY3kgc2VjdXJpdHlDaGVjaykKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWQoQ2FjaGVk
UmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyLCBjb25zdCBSZXNvdXJjZUxvYWRl
ck9wdGlvbnMmIG9wdGlvbnMpCiB7CisgICAgbV9vcHRpb25zID0gb3B0aW9uczsKICAgICBtX2xv
YWRpbmcgPSB0cnVlOwotICAgIG1fcmVxdWVzdCA9IENhY2hlZFJlc291cmNlUmVxdWVzdDo6bG9h
ZChjYWNoZWRSZXNvdXJjZUxvYWRlciwgdGhpcywgaW5jcmVtZW50YWwsIHNlY3VyaXR5Q2hlY2ss
IG1fb3B0aW9ucyk7CisgICAgbV9yZXF1ZXN0ID0gQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Ojpsb2Fk
KGNhY2hlZFJlc291cmNlTG9hZGVyLCB0aGlzLCBvcHRpb25zKTsKICAgICBpZiAobV9yZXF1ZXN0
KSB7CiAgICAgICAgIG1fc3RhdHVzID0gUGVuZGluZzsKICAgICAgICAgY2FjaGVkUmVzb3VyY2VM
b2FkZXItPmluY3JlbWVudFJlcXVlc3RDb3VudCh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCShyZXZpc2lvbiA5NTYzNSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC04NSwxMCArODUsOSBAQAogCiAgICAgQ2FjaGVkUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgVHlwZSk7CiAgICAgdmlydHVhbCB+Q2FjaGVkUmVzb3VyY2UoKTsKLSAgICAKLSAg
ICB2aXJ0dWFsIHZvaWQgbG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VM
b2FkZXIpICB7IGxvYWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIsIGZhbHNlLCBEb1NlY3VyaXR5Q2hl
Y2spOyB9Ci0gICAgdm9pZCBsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiwgYm9vbCBpbmNyZW1l
bnRhbCwgU2VjdXJpdHlDaGVja1BvbGljeSk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZChDYWNo
ZWRSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOworCiAgICAg
dmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwg
U3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpOwpAQCAtMTk0LDggKzE5Myw3IEBACiAKICAgICBib29sIHdhc0NhbmNlbGVkKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gQ2FuY2VsZWQ7IH0KICAgICBib29sIGVycm9yT2NjdXJy
ZWQoKSBjb25zdCB7IHJldHVybiAobV9zdGF0dXMgPT0gTG9hZEVycm9yIHx8IG1fc3RhdHVzID09
IERlY29kZUVycm9yKTsgfQotICAgIAotICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkZXJPcHRpb25z
KGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykgeyBtX29wdGlvbnMgPSBvcHRp
b25zOyB9CisKICAgICBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSBjb25zdCB7IHJl
dHVybiBtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrczsgfQogICAg
IAogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSB7IH0KQEAgLTI0Miw2ICsy
NDAsNyBAQAogICAgIFJlc291cmNlUmVxdWVzdCBtX3Jlc291cmNlUmVxdWVzdDsKICAgICBTdHJp
bmcgbV9hY2NlcHQ7CiAgICAgT3duUHRyPENhY2hlZFJlc291cmNlUmVxdWVzdD4gbV9yZXF1ZXN0
OworICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyBtX29wdGlvbnM7CiAgICAgUmVzb3VyY2VMb2Fk
UHJpb3JpdHkgbV9sb2FkUHJpb3JpdHk7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9u
c2U7CkBAIC0yNzksOCArMjc4LDYgQEAKICAgICB1bnNpZ25lZCBtX3R5cGUgOiAzOyAvLyBUeXBl
CiAgICAgdW5zaWduZWQgbV9zdGF0dXMgOiAzOyAvLyBTdGF0dXMKIAotICAgIFJlc291cmNlTG9h
ZGVyT3B0aW9ucyBtX29wdGlvbnM7Ci0KICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCBtX2RlbGV0
ZWQ7CiAgICAgdW5zaWduZWQgbV9scnVJbmRleDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCShyZXZpc2lvbiA5
NTYzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVl
c3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCwxMCArNzQsOSBAQAogfQogI2VuZGlmCiAKLUNh
Y2hlZFJlc291cmNlUmVxdWVzdDo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0KENhY2hlZFJlc291cmNl
TG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBi
b29sIGluY3JlbWVudGFsKQorQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpDYWNoZWRSZXNvdXJjZVJl
cXVlc3QoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyLCBDYWNoZWRS
ZXNvdXJjZSogcmVzb3VyY2UpCiAgICAgOiBtX2NhY2hlZFJlc291cmNlTG9hZGVyKGNhY2hlZFJl
c291cmNlTG9hZGVyKQogICAgICwgbV9yZXNvdXJjZShyZXNvdXJjZSkKLSAgICAsIG1faW5jcmVt
ZW50YWwoaW5jcmVtZW50YWwpCiAgICAgLCBtX211bHRpcGFydChmYWxzZSkKICAgICAsIG1fZmlu
aXNoaW5nKGZhbHNlKQogewpAQCAtODcsOSArODYsOSBAQAogewogfQogCi1QYXNzT3duUHRyPENh
Y2hlZFJlc291cmNlUmVxdWVzdD4gQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Ojpsb2FkKENhY2hlZFJl
c291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3VyY2UqIHJlc291
cmNlLCBib29sIGluY3JlbWVudGFsLCBTZWN1cml0eUNoZWNrUG9saWN5IHNlY3VyaXR5Q2hlY2ss
IGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKK1Bhc3NPd25QdHI8Q2FjaGVk
UmVzb3VyY2VSZXF1ZXN0PiBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmxvYWQoQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2Us
IGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBPd25QdHI8Q2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRQdHIobmV3IENhY2hlZFJlc291cmNl
UmVxdWVzdChjYWNoZWRSZXNvdXJjZUxvYWRlciwgcmVzb3VyY2UsIGluY3JlbWVudGFsKSk7Cisg
ICAgT3duUHRyPENhY2hlZFJlc291cmNlUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0UHRyKG5ldyBD
YWNoZWRSZXNvdXJjZVJlcXVlc3QoY2FjaGVkUmVzb3VyY2VMb2FkZXIsIHJlc291cmNlKSk7CiAK
ICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0ID0gcmVzb3VyY2UtPnJlc291cmNl
UmVxdWVzdCgpOwogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQpAQCAtMTI0LDcgKzEyMyw3IEBACiAg
ICAgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHkgPSByZXNvdXJjZS0+bG9hZFByaW9yaXR5
KCk7CiAgICAgcmVzb3VyY2VSZXF1ZXN0LnNldFByaW9yaXR5KHByaW9yaXR5KTsKIAotICAgIFJl
ZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gcmVzb3VyY2VMb2FkU2NoZWR1bGVyKCkt
PnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgp
LT5mcmFtZSgpLCByZXF1ZXN0LmdldCgpLCByZXNvdXJjZVJlcXVlc3QsIHByaW9yaXR5LCBzZWN1
cml0eUNoZWNrLCBvcHRpb25zKTsKKyAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGxvYWRl
ciA9IHJlc291cmNlTG9hZFNjaGVkdWxlcigpLT5zY2hlZHVsZVN1YnJlc291cmNlTG9hZChjYWNo
ZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSwgcmVxdWVzdC5nZXQoKSwgcmVz
b3VyY2VSZXF1ZXN0LCBwcmlvcml0eSwgb3B0aW9ucyk7CiAgICAgaWYgKCFsb2FkZXIgfHwgbG9h
ZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXaGF0IGlm
IHJlc291cmNlcyBpbiBvdGhlciBmcmFtZXMgd2VyZSB3YWl0aW5nIGZvciB0aGlzIHJldmFsaWRh
dGlvbj8KICAgICAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIkNhbm5vdCBzdGFydCBsb2FkaW5n
ICclcyciLCByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKQEAgLTI3
MSw3ICsyNzAsNyBAQAogICAgICAgICAvLyBUaGUgcmVzb3VyY2UgZGF0YSB3aWxsIGNoYW5nZSBh
cyB0aGUgbmV4dCBwYXJ0IGlzIGxvYWRlZCwgc28gd2UgbmVlZCB0byBtYWtlIGEgY29weS4KICAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29waWVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEsIHNpemUpOwogICAgICAgICBtX3Jlc291cmNlLT5kYXRhKGNvcGllZERhdGEucmVs
ZWFzZSgpLCB0cnVlKTsKLSAgICB9IGVsc2UgaWYgKG1faW5jcmVtZW50YWwpCisgICAgfSBlbHNl
CiAgICAgICAgIG1fcmVzb3VyY2UtPmRhdGEobG9hZGVyLT5yZXNvdXJjZURhdGEoKSwgZmFsc2Up
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlUmVxdWVzdC5oCShyZXZpc2lvbiA5NTYzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDMs
MTMgKzQzLDEzIEBACiAKICAgICBjbGFzcyBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgOiBwcml2YXRl
IFN1YnJlc291cmNlTG9hZGVyQ2xpZW50IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQ
YXNzT3duUHRyPENhY2hlZFJlc291cmNlUmVxdWVzdD4gbG9hZChDYWNoZWRSZXNvdXJjZUxvYWRl
ciosIENhY2hlZFJlc291cmNlKiwgYm9vbCBpbmNyZW1lbnRhbCwgU2VjdXJpdHlDaGVja1BvbGlj
eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CisgICAgICAgIHN0YXRpYyBQYXNzT3du
UHRyPENhY2hlZFJlc291cmNlUmVxdWVzdD4gbG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciosIENh
Y2hlZFJlc291cmNlKiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CiAgICAgICAgIH5D
YWNoZWRSZXNvdXJjZVJlcXVlc3QoKTsKIAogICAgICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciog
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFJlc291cmNlTG9h
ZGVyOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QoQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSosIGJvb2wgaW5jcmVtZW50YWwpOwor
ICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqLCBDYWNo
ZWRSZXNvdXJjZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFN1YnJl
c291cmNlTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFN1YnJlc291cmNlTG9h
ZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KTsKQEAgLTYx
LDcgKzYxLDYgQEAKICAgICAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBtX2xvYWRlcjsK
ICAgICAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXI7CiAg
ICAgICAgIENhY2hlZFJlc291cmNlKiBtX3Jlc291cmNlOwotICAgICAgICBib29sIG1faW5jcmVt
ZW50YWw7CiAgICAgICAgIGJvb2wgbV9tdWx0aXBhcnQ7CiAgICAgICAgIGJvb2wgbV9maW5pc2hp
bmc7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAkocmV2aXNpb24gOTU2MzUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcihGcmFtZSogZnJhbWUsIE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiBjbGllbnQpCi0gICAgOiBSZXNvdXJjZUxv
YWRlcihmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29u
dGVudCwgRG9Ob3RCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzKSkKKyAgICA6IFJl
c291cmNlTG9hZGVyKGZyYW1lLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxiYWNrcywg
U25pZmZDb250ZW50LCBEb05vdEJ1ZmZlckRhdGEsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIFNr
aXBTZWN1cml0eUNoZWNrKSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKIHsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCShyZXZp
c2lvbiA5NTYzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw5ICs4NSw5IEBACiAjZW5kaWYKIH0KIAotUGFz
c1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVs
ZVN1YnJlc291cmNlTG9hZChGcmFtZSogZnJhbWUsIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiBj
bGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VMb2FkUHJpb3Jp
dHkgcHJpb3JpdHksIFNlY3VyaXR5Q2hlY2tQb2xpY3kgc2VjdXJpdHlDaGVjaywgY29uc3QgUmVz
b3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQorUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRl
cj4gUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmFtZSog
ZnJhbWUsIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHksIGNvbnN0IFJlc291
cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2Fk
ZXI+IGxvYWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoZnJhbWUsIGNsaWVudCwgcmVx
dWVzdCwgc2VjdXJpdHlDaGVjaywgb3B0aW9ucyk7CisgICAgUmVmUHRyPFN1YnJlc291cmNlTG9h
ZGVyPiBsb2FkZXIgPSBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKGZyYW1lLCBjbGllbnQsIHJl
cXVlc3QsIG9wdGlvbnMpOwogICAgIGlmIChsb2FkZXIpCiAgICAgICAgIHNjaGVkdWxlTG9hZChs
b2FkZXIuZ2V0KCksIHByaW9yaXR5KTsKICAgICByZXR1cm4gbG9hZGVyLnJlbGVhc2UoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gOTU2
MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU2NoZWR1bGVy
LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCkBAIC0xMTIsNiArMTEzLDE4IEBACiAgICAgCiAg
ICAgUmVzb3VyY2VSZXF1ZXN0IGNsaWVudFJlcXVlc3Qocik7CiAgICAgCisgICAgRnJhbWVMb2Fk
ZXIqIGZyYW1lTG9hZGVyID0gbV9mcmFtZS0+bG9hZGVyKCk7CisgICAgaWYgKG1fb3B0aW9ucy5z
ZWN1cml0eUNoZWNrID09IERvU2VjdXJpdHlDaGVjayAmJiAoZnJhbWVMb2FkZXItPnN0YXRlKCkg
PT0gRnJhbWVTdGF0ZVByb3Zpc2lvbmFsIHx8ICFmcmFtZUxvYWRlci0+YWN0aXZlRG9jdW1lbnRM
b2FkZXIoKSB8fCBmcmFtZUxvYWRlci0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+aXNTdG9wcGlu
ZygpKSkgeworICAgICAgICByZWxlYXNlUmVzb3VyY2VzKCk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgCisgICAgaWYgKG1fb3B0aW9ucy5zZWN1cml0eUNoZWNrID09IERvU2Vj
dXJpdHlDaGVjayAmJiAhbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2Fu
RGlzcGxheShjbGllbnRSZXF1ZXN0LnVybCgpKSkgeworICAgICAgICBGcmFtZUxvYWRlcjo6cmVw
b3J0TG9jYWxMb2FkRmFpbGVkKG1fZnJhbWUuZ2V0KCksIGNsaWVudFJlcXVlc3QudXJsKCkuc3Ry
aW5nKCkpOworICAgICAgICByZWxlYXNlUmVzb3VyY2VzKCk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI2MzkxCiAgICAgLy8gVGhlIHZhcmlvdXMgcGx1Zy1pbiBpbXBsZW1lbnRhdGlvbnMg
Y2FsbCBkaXJlY3RseSB0byBSZXNvdXJjZUxvYWRlcjo6bG9hZCgpIGluc3RlYWQgb2YgcGlwaW5n
IHJlcXVlc3RzCiAgICAgLy8gdGhyb3VnaCBGcmFtZUxvYWRlci4gQXMgYSByZXN1bHQsIHRoZXkg
bWlzcyB0aGUgRnJhbWVMb2FkZXI6OmFkZEV4dHJhRmllbGRzVG9SZXF1ZXN0KCkgc3RlcCB3aGlj
aCBzZXRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVy
LmNwcAkocmV2aXNpb24gOTU2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291
cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBNYWluUmVzb3VyY2VMb2FkZXI6Ok1haW5SZXNvdXJjZUxvYWRlcihGcmFt
ZSogZnJhbWUpCi0gICAgOiBSZXNvdXJjZUxvYWRlcihmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRp
b25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgQWxsb3dTdG9yZWRD
cmVkZW50aWFscykpCisgICAgOiBSZXNvdXJjZUxvYWRlcihmcmFtZSwgUmVzb3VyY2VMb2FkZXJP
cHRpb25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgQWxsb3dTdG9y
ZWRDcmVkZW50aWFscywgU2tpcFNlY3VyaXR5Q2hlY2spKQogICAgICwgbV9kYXRhTG9hZFRpbWVy
KHRoaXMsICZNYWluUmVzb3VyY2VMb2FkZXI6OmhhbmRsZURhdGFMb2FkTm93KQogICAgICwgbV9s
b2FkaW5nTXVsdGlwYXJ0Q29udGVudChmYWxzZSkKICAgICAsIG1fd2FpdGluZ0ZvckNvbnRlbnRQ
b2xpY3koZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZFNjaGVkdWxlci5oCShyZXZpc2lvbiA5NTYzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQAog
cHVibGljOgogICAgIGZyaWVuZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXIqIHJlc291cmNlTG9hZFNj
aGVkdWxlcigpOwogCi0gICAgUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gc2NoZWR1bGVT
dWJyZXNvdXJjZUxvYWQoRnJhbWUqLCBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCosIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIFJlc291cmNlTG9hZFByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3Jp
dHlMb3csIFNlY3VyaXR5Q2hlY2tQb2xpY3kgPSBEb1NlY3VyaXR5Q2hlY2ssIGNvbnN0IFJlc291
cmNlTG9hZGVyT3B0aW9ucyYgPSBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxiYWNrcywg
U25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzKSk7CisgICAg
UGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gc2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJh
bWUqLCBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJl
c291cmNlTG9hZFByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3csIGNvbnN0IFJlc291
cmNlTG9hZGVyT3B0aW9ucyYgPSBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxiYWNrcywg
U25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBEb1NlY3Vy
aXR5Q2hlY2spKTsKICAgICBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBz
Y2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgYWRkTWFpblJlc291
cmNlTG9hZChSZXNvdXJjZUxvYWRlciopOwogICAgIHZvaWQgcmVtb3ZlKFJlc291cmNlTG9hZGVy
Kik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJ
KHJldmlzaW9uIDk1NjM1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsMjIgKzYxLDE0IEBACiAjZW5kaWYKIH0KIAot
UGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShG
cmFtZSogZnJhbWUsIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2VjdXJpdHlDaGVja1BvbGljeSBzZWN1cml0eUNoZWNrLCBj
b25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCitQYXNzUmVmUHRyPFN1YnJlc291
cmNlTG9hZGVyPiBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwgU3VicmVz
b3VyY2VMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKCFmcmFt
ZSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBGcmFtZUxvYWRlciogZmwgPSBmcmFtZS0+bG9h
ZGVyKCk7Ci0gICAgaWYgKHNlY3VyaXR5Q2hlY2sgPT0gRG9TZWN1cml0eUNoZWNrICYmIChmbC0+
c3RhdGUoKSA9PSBGcmFtZVN0YXRlUHJvdmlzaW9uYWwgfHwgIWZsLT5hY3RpdmVEb2N1bWVudExv
YWRlcigpIHx8IGZsLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5pc1N0b3BwaW5nKCkpKQotICAg
ICAgICByZXR1cm4gMDsKLQogICAgIFJlc291cmNlUmVxdWVzdCBuZXdSZXF1ZXN0ID0gcmVxdWVz
dDsKIAotICAgIGlmIChzZWN1cml0eUNoZWNrID09IERvU2VjdXJpdHlDaGVjayAmJiAhZnJhbWUt
PmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXkocmVxdWVzdC51cmwoKSkp
IHsKLSAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChmcmFtZSwgcmVx
dWVzdC51cmwoKS5zdHJpbmcoKSk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQogICAgIC8v
IE5vdGU6IFdlIHNraXAgdGhlIENvbnRlbnQtU2VjdXJpdHktUG9saWN5IGNoZWNrIGhlcmUgYmVj
YXVzZSB3ZSBjaGVjawogICAgIC8vIHRoZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhdCB0aGUg
Q2FjaGVkUmVzb3VyY2VMb2FkZXIgbGF5ZXIgc28gd2UgY2FuCiAgICAgLy8gaGFuZGxlIGRpZmZl
cmVudCByZXNvdXJjZSB0eXBlcyBkaWZmZXJlbnRseS4KQEAgLTEwMCw5ICs5Miw5IEBACiAgICAg
ZmwtPmFkZEV4dHJhRmllbGRzVG9TdWJyZXNvdXJjZVJlcXVlc3QobmV3UmVxdWVzdCk7CiAKICAg
ICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHN1YmxvYWRlcihhZG9wdFJlZihuZXcgU3VicmVz
b3VyY2VMb2FkZXIoZnJhbWUsIGNsaWVudCwgb3B0aW9ucykpKTsKLSAgICBzdWJsb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCktPmFkZFN1YnJlc291cmNlTG9hZGVyKHN1YmxvYWRlci5nZXQoKSk7CiAg
ICAgaWYgKCFzdWJsb2FkZXItPmluaXQobmV3UmVxdWVzdCkpCiAgICAgICAgIHJldHVybiAwOwor
ICAgIHN1YmxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+YWRkU3VicmVzb3VyY2VMb2FkZXIoc3Vi
bG9hZGVyLmdldCgpKTsKIAogICAgIHJldHVybiBzdWJsb2FkZXIucmVsZWFzZSgpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAJKHJldmlzaW9uIDk1NjM1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNiw2ICszMjYsNyBAQAog
ewogICAgIC8vIEFueSBjcmVkZW50aWFsIHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRo
ZSBjcm9zcy1zaXRlIHJlcXVlc3RzLgogICAgIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwgPSByZXF1
ZXN0LnVybCgpOworICAgIG1fb3B0aW9ucy5zZWN1cml0eUNoZWNrID0gc2VjdXJpdHlDaGVjazsK
ICAgICBBU1NFUlQobV9zYW1lT3JpZ2luUmVxdWVzdCB8fCByZXF1ZXN0VVJMLnVzZXIoKS5pc0Vt
cHR5KCkpOwogICAgIEFTU0VSVChtX3NhbWVPcmlnaW5SZXF1ZXN0IHx8IHJlcXVlc3RVUkwucGFz
cygpLmlzRW1wdHkoKSk7CiAKQEAgLTM1MSw3ICszNTIsNyBAQAogCiAgICAgICAgIC8vIENsZWFy
IHRoZSBsb2FkZXIgc28gdGhhdCBhbnkgY2FsbGJhY2tzIGZyb20gU3VicmVzb3VyY2VMb2FkZXI6
OmNyZWF0ZSB3aWxsIG5vdCBoYXZlIHRoZSBvbGQgbG9hZGVyLgogICAgICAgICBtX2xvYWRlciA9
IDA7Ci0gICAgICAgIG1fbG9hZGVyID0gcmVzb3VyY2VMb2FkU2NoZWR1bGVyKCktPnNjaGVkdWxl
U3VicmVzb3VyY2VMb2FkKG1fZG9jdW1lbnQtPmZyYW1lKCksIHRoaXMsIHJlcXVlc3QsIFJlc291
cmNlTG9hZFByaW9yaXR5TWVkaXVtLCBzZWN1cml0eUNoZWNrLCBvcHRpb25zKTsKKyAgICAgICAg
bV9sb2FkZXIgPSByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2NoZWR1bGVTdWJyZXNvdXJjZUxv
YWQobV9kb2N1bWVudC0+ZnJhbWUoKSwgdGhpcywgcmVxdWVzdCwgUmVzb3VyY2VMb2FkUHJpb3Jp
dHlNZWRpdW0sIG9wdGlvbnMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDk1NjM1
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDcgKzQxLDcgQEAKICAgICAKICAgICBjbGFzcyBTdWJyZXNvdXJjZUxvYWRl
ciA6IHB1YmxpYyBSZXNvdXJjZUxvYWRlciB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gY3JlYXRlKEZyYW1lKiwgU3VicmVzb3VyY2VM
b2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTZWN1cml0eUNoZWNrUG9saWN5
LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3VicmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShGcmFtZSosIFN1YnJlc291cmNlTG9hZGVyQ2xp
ZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25z
Jik7CiAKICAgICAgICAgdm9pZCBjbGVhckNsaWVudCgpIHsgbV9jbGllbnQgPSAwOyB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108713</attachid>
            <date>2011-09-26 12:57:57 -0700</date>
            <delta_ts>2011-09-26 18:28:27 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-67443-20110926125753.patch</filename>
            <type>text/plain</type>
            <size>34018</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1OTc2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTEtMDktMjEgIE5hdGUgQ2hh
cGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBDbGVhbiB1cCBDYWNoZWRSZXNv
dXJjZTo6bG9hZCgpLiBDb2xsYXBzZSBpdHMKKyAgICAgICAgbG9naWMgaW50byBhIHNpbmdsZSBj
YWxsc2l0ZSwgdGFraW5nIGp1c3QgYQorICAgICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciBhbmQg
YSBSZXNvdXJjZUxvYWRlck9wdGlvbnMuCisKKyAgICAgICAgMS4gSXRzICdpbmNyZW1lbnRhbCcg
cGFyYW1ldGVyIGlzIHJlZHVuZGFudC4KKyAgICAgICAgMi4gV2l0aCAnaW5jcmVtZW50YWwnIHJl
bW92ZWQsIHRoZSBTZWN1cml0eUNoZWNrUG9saWN5IGlzIHRoZSBvbmx5CisgICAgICAgICAgIHBh
cmFtZXRlciBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIENhY2hlZFJlc291cmNlOjpsb2FkKCkgdmFy
aWFudHMuCisgICAgICAgICAgIE1ha2luZyBpdCBhIHBhcnQgb2YgUmVzb3VyY2VMb2FkZXJPcHRp
b25zIHJlbW92ZXMgeWV0IGFub3RoZXIgcmFuZG9tCisgICAgICAgICAgIGVudW0gdGhhdCBpcyBw
YXNzZWQgYXJvdW5kIGluZGl2aWR1YWxseS4KKyAgICAgICAgMy4gV2UgY3VycmVudGx5IGhhdmUg
dG8gY2FsbCBzZXRSZXNvdXJjZUxvYWRlck9wdGlvbnMoKSBiZWZvcmUgbG9hZCgpIG9uIGEKKyAg
ICAgICAgICAgbmV3IENhY2hlZFJlc291cmNlLCBzbyB3ZSBzaG91bGQganVzdCB0YWtlIHRoZSBS
ZXNvdXJjZUxvYWRlck9wdGlvbnMgaW4gbG9hZCgpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzQ0MworCisgICAgICAgIFJldmlld2VkIGJ5IEFu
dHRpIEtvaXZpc3RvLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0b3Igb25seS4KKwor
ICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAq
IGxvYWRlci9GcmFtZUxvYWRlclR5cGVzLmg6IE1vdmUgU2VjdXJpdHlDaGVja1BvbGljeSB0byBS
ZXNvdXJjZUxvYWRlck9wdGlvbnMuaC4KKyAgICAgICAgKiBsb2FkZXIvTWFpblJlc291cmNlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3Bw
OgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuY3BwOiBFbmZvcmNlIFNlY3VyaXR5Q2hlY2tQb2xpY3kgaGVyZSBpbnN0ZWFkIG9m
IFN1YnJlc291cmNlTG9hZGVyLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlv
bnMuaDogU3RvcmUgU2VjdXJpdHlDaGVja1BvbGljeSBvbiBSZXNvdXJjZUxvYWRlck9wdGlvbnMu
CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1
bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMpOiBEZWZpbmUgdGhlIGRlZmF1bHQgUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zIGZvcgorICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2UgbG9hZHMgaGVyZSBpbnN0
ZWFkIG9mIGFzIGEgZGVmYXVsdCBwYXJhbWV0ZXIgb24gcmVxdWVzdFJlc291cmNlKCkuCisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKTogUmVtb3ZlIG1faW5jcmVtZW50
YWwsIHNpbmNlIGl0cyBwdXJwb3NlCisgICAgICAgICAgICBpcyBhbHJlYWR5IGVuZm9yY2VkIGlu
IHRoZSBkYXRhKCkgaW1wbGVtZW50YXRpb24gb2YgZXZlcnkgQ2FjaGVkUmVzb3VyY2UgdGhhdCBk
b2Vzbid0IHdhbnQKKyAgICAgICAgICAgIGluY3JlbWVudGFsIGxvYWRzLgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaDoKKwogMjAxMS0wOS0yNiAgTWloYWkg
UGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByOTU5NjAuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAkocmV2aXNpb24gOTU5NzYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzA5LDYgKzMwOSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2Fk
UmVxdWUKIHsKICAgICAvLyBBbnkgY3JlZGVudGlhbCBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQg
ZnJvbSB0aGUgY3Jvc3Mtc2l0ZSByZXF1ZXN0cy4KICAgICBjb25zdCBLVVJMJiByZXF1ZXN0VVJM
ID0gcmVxdWVzdC51cmwoKTsKKyAgICBtX29wdGlvbnMuc2VjdXJpdHlDaGVjayA9IHNlY3VyaXR5
Q2hlY2s7CiAgICAgQVNTRVJUKG1fc2FtZU9yaWdpblJlcXVlc3QgfHwgcmVxdWVzdFVSTC51c2Vy
KCkuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQobV9zYW1lT3JpZ2luUmVxdWVzdCB8fCByZXF1ZXN0
VVJMLnBhc3MoKS5pc0VtcHR5KCkpOwogCkBAIC0zMzUsNyArMzM2LDcgQEAgdm9pZCBEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZQogCiAgICAgICAgIC8vIENsZWFyIHRoZSBsb2Fk
ZXIgc28gdGhhdCBhbnkgY2FsbGJhY2tzIGZyb20gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSB3
aWxsIG5vdCBoYXZlIHRoZSBvbGQgbG9hZGVyLgogICAgICAgICBtX2xvYWRlciA9IDA7Ci0gICAg
ICAgIG1fbG9hZGVyID0gcmVzb3VyY2VMb2FkU2NoZWR1bGVyKCktPnNjaGVkdWxlU3VicmVzb3Vy
Y2VMb2FkKG1fZG9jdW1lbnQtPmZyYW1lKCksIHRoaXMsIHJlcXVlc3QsIFJlc291cmNlTG9hZFBy
aW9yaXR5TWVkaXVtLCBzZWN1cml0eUNoZWNrLCBvcHRpb25zKTsKKyAgICAgICAgbV9sb2FkZXIg
PSByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQobV9kb2N1
bWVudC0+ZnJhbWUoKSwgdGhpcywgcmVxdWVzdCwgUmVzb3VyY2VMb2FkUHJpb3JpdHlNZWRpdW0s
IG9wdGlvbnMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCShyZXZpc2lvbiA5NTk3NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
MywxMSArMTAzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTYW5kYm94QWxsID0g
LTEgLy8gTWFzayB3aXRoIGFsbCBiaXRzIHNldCB0byAxLgogICAgIH07CiAKLSAgICBlbnVtIFNl
Y3VyaXR5Q2hlY2tQb2xpY3kgewotICAgICAgICBTa2lwU2VjdXJpdHlDaGVjaywKLSAgICAgICAg
RG9TZWN1cml0eUNoZWNrCi0gICAgfTsKLQogICAgIC8vIFBhc3NlZCB0byBGcmFtZUxvYWRlcjo6
dXJsU2VsZWN0ZWQoKSBhbmQgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUlmSmF2YVNjcmlwdFVS
TCgpCiAgICAgLy8gdG8gY29udHJvbCB3aGV0aGVyLCBpbiB0aGUgY2FzZSBvZiBhIEphdmFTY3Jp
cHQgVVJMLCBleGVjdXRlSWZKYXZhU2NyaXB0VVJMKCkgc2hvdWxkCiAgICAgLy8gcmVwbGFjZSB0
aGUgZG9jdW1lbnQuICBJdCBpcyBhIEZJWE1FIHRvIGVsaW1pbmF0ZSB0aGlzIGV4dHJhIHBhcmFt
ZXRlciBmcm9tCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9h
ZGVyLmNwcAkocmV2aXNpb24gOTU5NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJl
c291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBNYWluUmVzb3VyY2VMb2FkZXI6Ok1haW5SZXNvdXJjZUxvYWRlcihG
cmFtZSogZnJhbWUpCi0gICAgOiBSZXNvdXJjZUxvYWRlcihmcmFtZSwgUmVzb3VyY2VMb2FkZXJP
cHRpb25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgQWxsb3dTdG9y
ZWRDcmVkZW50aWFscywgQXNrQ2xpZW50Rm9yQ3Jvc3NPcmlnaW5DcmVkZW50aWFscykpCisgICAg
OiBSZXNvdXJjZUxvYWRlcihmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFj
a3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgQWxsb3dTdG9yZWRDcmVkZW50aWFscywgQXNr
Q2xpZW50Rm9yQ3Jvc3NPcmlnaW5DcmVkZW50aWFscywgU2tpcFNlY3VyaXR5Q2hlY2spKQogICAg
ICwgbV9kYXRhTG9hZFRpbWVyKHRoaXMsICZNYWluUmVzb3VyY2VMb2FkZXI6OmhhbmRsZURhdGFM
b2FkTm93KQogICAgICwgbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudChmYWxzZSkKICAgICAsIG1f
d2FpdGluZ0ZvckNvbnRlbnRQb2xpY3koZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAJKHJldmlzaW9uIDk1
OTc2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIoRnJhbWUqIGZyYW1lLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCogY2xpZW50
KQotICAgIDogUmVzb3VyY2VMb2FkZXIoZnJhbWUsIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5k
Q2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIERvTm90QnVmZmVyRGF0YSwgQWxsb3dTdG9yZWRDcmVk
ZW50aWFscywgQXNrQ2xpZW50Rm9yQ3Jvc3NPcmlnaW5DcmVkZW50aWFscykpCisgICAgOiBSZXNv
dXJjZUxvYWRlcihmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIFNu
aWZmQ29udGVudCwgRG9Ob3RCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBBc2tD
bGllbnRGb3JDcm9zc09yaWdpbkNyZWRlbnRpYWxzLCBTa2lwU2VjdXJpdHlDaGVjaykpCiAgICAg
LCBtX2NsaWVudChjbGllbnQpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkU2NoZWR1bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAkocmV2aXNpb24gOTU5NzYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODUsOSArODUsOSBAQCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OlJlc291cmNlTG9hZFNjaGVk
CiAjZW5kaWYKIH0KIAotUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmFtZSogZnJhbWUsIFN1YnJlc291
cmNlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
UmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHksIFNlY3VyaXR5Q2hlY2tQb2xpY3kgc2VjdXJp
dHlDaGVjaywgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQorUGFzc1JlZlB0
cjxTdWJyZXNvdXJjZUxvYWRlcj4gUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJl
c291cmNlTG9hZChGcmFtZSogZnJhbWUsIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiBjbGllbnQs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJp
b3JpdHksIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBSZWZQ
dHI8U3VicmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUo
ZnJhbWUsIGNsaWVudCwgcmVxdWVzdCwgc2VjdXJpdHlDaGVjaywgb3B0aW9ucyk7CisgICAgUmVm
UHRyPFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRl
KGZyYW1lLCBjbGllbnQsIHJlcXVlc3QsIG9wdGlvbnMpOwogICAgIGlmIChsb2FkZXIpCiAgICAg
ICAgIHNjaGVkdWxlTG9hZChsb2FkZXIuZ2V0KCksIHByaW9yaXR5KTsKICAgICByZXR1cm4gbG9h
ZGVyLnJlbGVhc2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmgJKHJldmlzaW9uIDk1OTc2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBA
IGNsYXNzIFJlc291cmNlTG9hZFNjaGVkdWxlciB7CiBwdWJsaWM6CiAgICAgZnJpZW5kIFJlc291
cmNlTG9hZFNjaGVkdWxlciogcmVzb3VyY2VMb2FkU2NoZWR1bGVyKCk7CiAKLSAgICBQYXNzUmVm
UHRyPFN1YnJlc291cmNlTG9hZGVyPiBzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmFtZSosIFN1
YnJlc291cmNlTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VM
b2FkUHJpb3JpdHksIFNlY3VyaXR5Q2hlY2tQb2xpY3ksIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0
aW9ucyYpOworICAgIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3VicmVz
b3VyY2VMb2FkKEZyYW1lKiwgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBSZXNvdXJjZUxvYWRQcmlvcml0eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRp
b25zJik7CiAgICAgUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gc2NoZWR1
bGVQbHVnaW5TdHJlYW1Mb2FkKEZyYW1lKiwgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGll
bnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGFkZE1haW5SZXNvdXJjZUxv
YWQoUmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIHJlbW92ZShSZXNvdXJjZUxvYWRlciopOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA5
NTk3NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExMyw2ICsxMTMsMTggQEAgYm9vbCBSZXNvdXJjZUxvYWRlcjo6aW5pdChj
b25zdCBSZXNvdXJjZQogICAgIAogICAgIFJlc291cmNlUmVxdWVzdCBjbGllbnRSZXF1ZXN0KHIp
OwogICAgIAorICAgIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlciA9IG1fZnJhbWUtPmxvYWRlcigp
OworICAgIGlmIChtX29wdGlvbnMuc2VjdXJpdHlDaGVjayA9PSBEb1NlY3VyaXR5Q2hlY2sgJiYg
KGZyYW1lTG9hZGVyLT5zdGF0ZSgpID09IEZyYW1lU3RhdGVQcm92aXNpb25hbCB8fCAhZnJhbWVM
b2FkZXItPmFjdGl2ZURvY3VtZW50TG9hZGVyKCkgfHwgZnJhbWVMb2FkZXItPmFjdGl2ZURvY3Vt
ZW50TG9hZGVyKCktPmlzU3RvcHBpbmcoKSkpIHsKKyAgICAgICAgcmVsZWFzZVJlc291cmNlcygp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIGlmIChtX29wdGlvbnMu
c2VjdXJpdHlDaGVjayA9PSBEb1NlY3VyaXR5Q2hlY2sgJiYgIW1fZnJhbWUtPmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXkoY2xpZW50UmVxdWVzdC51cmwoKSkpIHsKKyAg
ICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChtX2ZyYW1lLmdldCgpLCBj
bGllbnRSZXF1ZXN0LnVybCgpLnN0cmluZygpKTsKKyAgICAgICAgcmVsZWFzZVJlc291cmNlcygp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAogICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjM5MQogICAgIC8vIFRoZSB2YXJpb3VzIHBs
dWctaW4gaW1wbGVtZW50YXRpb25zIGNhbGwgZGlyZWN0bHkgdG8gUmVzb3VyY2VMb2FkZXI6Omxv
YWQoKSBpbnN0ZWFkIG9mIHBpcGluZyByZXF1ZXN0cwogICAgIC8vIHRocm91Z2ggRnJhbWVMb2Fk
ZXIuIEFzIGEgcmVzdWx0LCB0aGV5IG1pc3MgdGhlIEZyYW1lTG9hZGVyOjphZGRFeHRyYUZpZWxk
c1RvUmVxdWVzdCgpIHN0ZXAgd2hpY2ggc2V0cwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaAkocmV2aXNpb24gOTU5NzYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ5LDIwICs0OSwyNiBAQCBlbnVtIERhdGFCdWZmZXJpbmdQb2xpY3kgewogICAgIEJ1ZmZlckRh
dGEsCiAgICAgRG9Ob3RCdWZmZXJEYXRhCiB9OwotICAgIAorCiBlbnVtIENsaWVudENyb3NzT3Jp
Z2luQ3JlZGVudGlhbFBvbGljeSB7CiAgICAgQXNrQ2xpZW50Rm9yQ3Jvc3NPcmlnaW5DcmVkZW50
aWFscywKICAgICBEb05vdEFza0NsaWVudEZvckNyb3NzT3JpZ2luQ3JlZGVudGlhbHMKIH07CiAK
K2VudW0gU2VjdXJpdHlDaGVja1BvbGljeSB7CisgICAgU2tpcFNlY3VyaXR5Q2hlY2ssCisgICAg
RG9TZWN1cml0eUNoZWNrCit9OworCiBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zIHsKLSAg
ICBSZXNvdXJjZUxvYWRlck9wdGlvbnMoKSA6IHNlbmRMb2FkQ2FsbGJhY2tzKERvTm90U2VuZENh
bGxiYWNrcyksIHNuaWZmQ29udGVudChEb05vdFNuaWZmQ29udGVudCksIHNob3VsZEJ1ZmZlckRh
dGEoQnVmZmVyRGF0YSksIGFsbG93Q3JlZGVudGlhbHMoRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRp
YWxzKSwgY3Jvc3NPcmlnaW5DcmVkZW50aWFsUG9saWN5KERvTm90QXNrQ2xpZW50Rm9yQ3Jvc3NP
cmlnaW5DcmVkZW50aWFscykgeyB9Ci0gICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxs
YmFja1BvbGljeSBzZW5kTG9hZENhbGxiYWNrcywgQ29udGVudFNuaWZmaW5nUG9saWN5IHNuaWZm
Q29udGVudCwgRGF0YUJ1ZmZlcmluZ1BvbGljeSBzaG91bGRCdWZmZXJEYXRhLCBTdG9yZWRDcmVk
ZW50aWFscyBhbGxvd0NyZWRlbnRpYWxzLCBDbGllbnRDcm9zc09yaWdpbkNyZWRlbnRpYWxQb2xp
Y3kgY3Jvc3NPcmlnaW5DcmVkZW50aWFsUG9saWN5KQorICAgIFJlc291cmNlTG9hZGVyT3B0aW9u
cygpIDogc2VuZExvYWRDYWxsYmFja3MoRG9Ob3RTZW5kQ2FsbGJhY2tzKSwgc25pZmZDb250ZW50
KERvTm90U25pZmZDb250ZW50KSwgc2hvdWxkQnVmZmVyRGF0YShCdWZmZXJEYXRhKSwgYWxsb3dD
cmVkZW50aWFscyhEb05vdEFsbG93U3RvcmVkQ3JlZGVudGlhbHMpLCBjcm9zc09yaWdpbkNyZWRl
bnRpYWxQb2xpY3koRG9Ob3RBc2tDbGllbnRGb3JDcm9zc09yaWdpbkNyZWRlbnRpYWxzKSwgc2Vj
dXJpdHlDaGVjayhEb1NlY3VyaXR5Q2hlY2spIHsgfQorICAgIFJlc291cmNlTG9hZGVyT3B0aW9u
cyhTZW5kQ2FsbGJhY2tQb2xpY3kgc2VuZExvYWRDYWxsYmFja3MsIENvbnRlbnRTbmlmZmluZ1Bv
bGljeSBzbmlmZkNvbnRlbnQsIERhdGFCdWZmZXJpbmdQb2xpY3kgc2hvdWxkQnVmZmVyRGF0YSwg
U3RvcmVkQ3JlZGVudGlhbHMgYWxsb3dDcmVkZW50aWFscywgQ2xpZW50Q3Jvc3NPcmlnaW5DcmVk
ZW50aWFsUG9saWN5IGNyb3NzT3JpZ2luQ3JlZGVudGlhbFBvbGljeSwgU2VjdXJpdHlDaGVja1Bv
bGljeSBzZWN1cml0eUNoZWNrKQogICAgICAgICA6IHNlbmRMb2FkQ2FsbGJhY2tzKHNlbmRMb2Fk
Q2FsbGJhY2tzKQogICAgICAgICAsIHNuaWZmQ29udGVudChzbmlmZkNvbnRlbnQpCiAgICAgICAg
ICwgc2hvdWxkQnVmZmVyRGF0YShzaG91bGRCdWZmZXJEYXRhKQogICAgICAgICAsIGFsbG93Q3Jl
ZGVudGlhbHMoYWxsb3dDcmVkZW50aWFscykKICAgICAgICAgLCBjcm9zc09yaWdpbkNyZWRlbnRp
YWxQb2xpY3koY3Jvc3NPcmlnaW5DcmVkZW50aWFsUG9saWN5KQorICAgICAgICAsIHNlY3VyaXR5
Q2hlY2soc2VjdXJpdHlDaGVjaykKICAgICB7CiAgICAgfQogICAgIFNlbmRDYWxsYmFja1BvbGlj
eSBzZW5kTG9hZENhbGxiYWNrczsKQEAgLTcwLDYgKzc2LDcgQEAgc3RydWN0IFJlc291cmNlTG9h
ZGVyT3B0aW9ucyB7CiAgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBzaG91bGRCdWZmZXJEYXRhOwog
ICAgIFN0b3JlZENyZWRlbnRpYWxzIGFsbG93Q3JlZGVudGlhbHM7IC8vIFdoZXRoZXIgSFRUUCBj
cmVkZW50aWFscyBhbmQgY29va2llcyBhcmUgc2VudCB3aXRoIHRoZSByZXF1ZXN0LgogICAgIENs
aWVudENyb3NzT3JpZ2luQ3JlZGVudGlhbFBvbGljeSBjcm9zc09yaWdpbkNyZWRlbnRpYWxQb2xp
Y3k7IC8vIFdoZXRoZXIgd2Ugd2lsbCBhc2sgdGhlIGNsaWVudCBmb3IgY3JlZGVudGlhbHMgKGlm
IHdlIGFsbG93IGNyZWRlbnRpYWxzIGF0IGFsbCkuCisgICAgU2VjdXJpdHlDaGVja1BvbGljeSBz
ZWN1cml0eUNoZWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZSAgICAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gOTU5
NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MSwyMiArNjEsMTQgQEAgU3VicmVzb3VyY2VMb2FkZXI6On5TdWJyZXNv
dXJjZUxvYWRlcigpCiAjZW5kaWYKIH0KIAotUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4g
U3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShGcmFtZSogZnJhbWUsIFN1YnJlc291cmNlTG9hZGVy
Q2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2VjdXJpdHlD
aGVja1BvbGljeSBzZWN1cml0eUNoZWNrLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9w
dGlvbnMpCitQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBTdWJyZXNvdXJjZUxvYWRlcjo6
Y3JlYXRlKEZyYW1lKiBmcmFtZSwgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQqIGNsaWVudCwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMm
IG9wdGlvbnMpCiB7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBG
cmFtZUxvYWRlciogZmwgPSBmcmFtZS0+bG9hZGVyKCk7Ci0gICAgaWYgKHNlY3VyaXR5Q2hlY2sg
PT0gRG9TZWN1cml0eUNoZWNrICYmIChmbC0+c3RhdGUoKSA9PSBGcmFtZVN0YXRlUHJvdmlzaW9u
YWwgfHwgIWZsLT5hY3RpdmVEb2N1bWVudExvYWRlcigpIHx8IGZsLT5hY3RpdmVEb2N1bWVudExv
YWRlcigpLT5pc1N0b3BwaW5nKCkpKQotICAgICAgICByZXR1cm4gMDsKLQogICAgIFJlc291cmNl
UmVxdWVzdCBuZXdSZXF1ZXN0ID0gcmVxdWVzdDsKIAotICAgIGlmIChzZWN1cml0eUNoZWNrID09
IERvU2VjdXJpdHlDaGVjayAmJiAhZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkt
PmNhbkRpc3BsYXkocmVxdWVzdC51cmwoKSkpIHsKLSAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9y
dExvY2FsTG9hZEZhaWxlZChmcmFtZSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSk7Ci0gICAgICAg
IHJldHVybiAwOwotICAgIH0KLQogICAgIC8vIE5vdGU6IFdlIHNraXAgdGhlIENvbnRlbnQtU2Vj
dXJpdHktUG9saWN5IGNoZWNrIGhlcmUgYmVjYXVzZSB3ZSBjaGVjawogICAgIC8vIHRoZSBDb250
ZW50LVNlY3VyaXR5LVBvbGljeSBhdCB0aGUgQ2FjaGVkUmVzb3VyY2VMb2FkZXIgbGF5ZXIgc28g
d2UgY2FuCiAgICAgLy8gaGFuZGxlIGRpZmZlcmVudCByZXNvdXJjZSB0eXBlcyBkaWZmZXJlbnRs
eS4KQEAgLTEwMCw5ICs5Miw5IEBAIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1YnJl
c291cmMKICAgICBmbC0+YWRkRXh0cmFGaWVsZHNUb1N1YnJlc291cmNlUmVxdWVzdChuZXdSZXF1
ZXN0KTsKIAogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gc3VibG9hZGVyKGFkb3B0UmVm
KG5ldyBTdWJyZXNvdXJjZUxvYWRlcihmcmFtZSwgY2xpZW50LCBvcHRpb25zKSkpOwotICAgIHN1
YmxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+YWRkU3VicmVzb3VyY2VMb2FkZXIoc3VibG9hZGVy
LmdldCgpKTsKICAgICBpZiAoIXN1YmxvYWRlci0+aW5pdChuZXdSZXF1ZXN0KSkKICAgICAgICAg
cmV0dXJuIDA7CisgICAgc3VibG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5hZGRTdWJyZXNvdXJj
ZUxvYWRlcihzdWJsb2FkZXIuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHN1YmxvYWRlci5yZWxlYXNl
KCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAko
cmV2aXNpb24gOTU5NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgCiAgICAgY2xhc3MgU3VicmVzb3VyY2VMb2FkZXIgOiBwdWJsaWMgUmVzb3VyY2VMb2Fk
ZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VM
b2FkZXI+IGNyZWF0ZShGcmFtZSosIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgU2VjdXJpdHlDaGVja1BvbGljeSwgY29uc3QgUmVzb3VyY2VMb2FkZXJP
cHRpb25zJik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBj
cmVhdGUoRnJhbWUqLCBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOwogCiAgICAgICAgIHZvaWQgY2xl
YXJDbGllbnQoKSB7IG1fY2xpZW50ID0gMDsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCShyZXZpc2lvbiA5NTk3NikKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsMTAg
KzcwLDExIEBAIENhY2hlZEZvbnQ6On5DYWNoZWRGb250KCkKICNlbmRpZgogfQogCi12b2lkIENh
Y2hlZEZvbnQ6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqKQordm9pZCBDYWNoZWRGb250Ojps
b2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBv
cHRpb25zKQogewogICAgIC8vIERvbid0IGxvYWQgdGhlIGZpbGUgeWV0LiAgV2FpdCBmb3IgYW4g
YWNjZXNzIGJlZm9yZSB0cmlnZ2VyaW5nIHRoZSBsb2FkLgogICAgIHNldExvYWRpbmcodHJ1ZSk7
CisgICAgbV9vcHRpb25zID0gb3B0aW9uczsKIH0KIAogdm9pZCBDYWNoZWRGb250OjpkaWRBZGRD
bGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMpCkBAIC05Nyw3ICs5OCw3IEBAIHZvaWQgQ2Fj
aGVkRm9udDo6YmVnaW5Mb2FkSWZOZWVkZWQoQ2FjaGUKIHsKICAgICBpZiAoIW1fbG9hZEluaXRp
YXRlZCkgewogICAgICAgICBtX2xvYWRJbml0aWF0ZWQgPSB0cnVlOwotICAgICAgICBDYWNoZWRS
ZXNvdXJjZTo6bG9hZChkbCk7CisgICAgICAgIENhY2hlZFJlc291cmNlOjpsb2FkKGRsLCBtX29w
dGlvbnMpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5oCShyZXZpc2lvbiA5NTk3NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRGb250LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgog
ICAgIENhY2hlZEZvbnQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdmlydHVhbCB+Q2Fj
aGVkRm9udCgpOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBsb2FkKENhY2hlZFJlc291cmNlTG9h
ZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlcik7CisgICAgdmlydHVhbCB2b2lkIGxvYWQoQ2FjaGVk
UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwCShyZXZpc2lvbiA5NTk3NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDEwICs4MSwxMCBAQCB2b2lkIENh
Y2hlZEltYWdlOjpkZWNvZGVkRGF0YURlbGV0aW9uVGltCiAgICAgZGVzdHJveURlY29kZWREYXRh
KCk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNh
Y2hlZFJlc291cmNlTG9hZGVyKQordm9pZCBDYWNoZWRJbWFnZTo6bG9hZChDYWNoZWRSZXNvdXJj
ZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9u
cyYgb3B0aW9ucykKIHsKICAgICBpZiAoIWNhY2hlZFJlc291cmNlTG9hZGVyIHx8IGNhY2hlZFJl
c291cmNlTG9hZGVyLT5hdXRvTG9hZEltYWdlcygpKQotICAgICAgICBDYWNoZWRSZXNvdXJjZTo6
bG9hZChjYWNoZWRSZXNvdXJjZUxvYWRlciwgdHJ1ZSwgRG9TZWN1cml0eUNoZWNrKTsKKyAgICAg
ICAgQ2FjaGVkUmVzb3VyY2U6OmxvYWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIsIG9wdGlvbnMpOwog
ICAgIGVsc2UKICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAkocmV2aXNpb24gOTU5NzYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
NDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgQ2FjaGVkSW1hZ2UoSW1hZ2UqKTsKICAgICB2aXJ0
dWFsIH5DYWNoZWRJbWFnZSgpOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBsb2FkKENhY2hlZFJl
c291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlcik7CisgICAgdmlydHVhbCB2b2lkIGxv
YWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsK
IAogICAgIEltYWdlKiBpbWFnZSgpIGNvbnN0OyAvLyBSZXR1cm5zIHRoZSBudWxsSW1hZ2UoKSBp
ZiB0aGUgaW1hZ2UgaXMgbm90IGF2YWlsYWJsZSB5ZXQuCiAgICAgYm9vbCBoYXNJbWFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAkocmV2aXNpb24gOTU5NzYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05Niw3ICs5Niw2IEBAIENhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJjZShjb25zdCBS
ZXMKICAgICAsIG1fbG9hZGluZyhmYWxzZSkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9z
dGF0dXMoUGVuZGluZykKLSAgICAsIG1fb3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRl
bnQsIEJ1ZmZlckRhdGEsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIEFza0NsaWVudEZvckNyb3Nz
T3JpZ2luQ3JlZGVudGlhbHMpCiAjaWZuZGVmIE5ERUJVRwogICAgICwgbV9kZWxldGVkKGZhbHNl
KQogICAgICwgbV9scnVJbmRleCgwKQpAQCAtMTMxLDEwICsxMzAsMTEgQEAgQ2FjaGVkUmVzb3Vy
Y2U6On5DYWNoZWRSZXNvdXJjZSgpCiAgICAgICAgIG1fb3duaW5nQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXItPnJlbW92ZUNhY2hlZFJlc291cmNlKHRoaXMpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNl
Ojpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciwgYm9vbCBp
bmNyZW1lbnRhbCwgU2VjdXJpdHlDaGVja1BvbGljeSBzZWN1cml0eUNoZWNrKQordm9pZCBDYWNo
ZWRSZXNvdXJjZTo6bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKKyAgICBtX29wdGlv
bnMgPSBvcHRpb25zOwogICAgIG1fbG9hZGluZyA9IHRydWU7Ci0gICAgbV9yZXF1ZXN0ID0gQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0Ojpsb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLCB0aGlzLCBpbmNy
ZW1lbnRhbCwgc2VjdXJpdHlDaGVjaywgbV9vcHRpb25zKTsKKyAgICBtX3JlcXVlc3QgPSBDYWNo
ZWRSZXNvdXJjZVJlcXVlc3Q6OmxvYWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIsIHRoaXMsIG9wdGlv
bnMpOwogICAgIGlmIChtX3JlcXVlc3QpIHsKICAgICAgICAgbV9zdGF0dXMgPSBQZW5kaW5nOwog
ICAgICAgICBjYWNoZWRSZXNvdXJjZUxvYWRlci0+aW5jcmVtZW50UmVxdWVzdENvdW50KHRoaXMp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJ
KHJldmlzaW9uIDk1OTc2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDkgKzg1LDggQEAgcHVibGljOgogCiAgICAg
Q2FjaGVkUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgVHlwZSk7CiAgICAgdmlydHVh
bCB+Q2FjaGVkUmVzb3VyY2UoKTsKLSAgICAKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZChDYWNoZWRS
ZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIpICB7IGxvYWQoY2FjaGVkUmVzb3Vy
Y2VMb2FkZXIsIGZhbHNlLCBEb1NlY3VyaXR5Q2hlY2spOyB9Ci0gICAgdm9pZCBsb2FkKENhY2hl
ZFJlc291cmNlTG9hZGVyKiwgYm9vbCBpbmNyZW1lbnRhbCwgU2VjdXJpdHlDaGVja1BvbGljeSk7
CisKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJl
c291cmNlTG9hZGVyT3B0aW9ucyYpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNv
bnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KQEAgLTE5NCw4ICsxOTMsNyBAQCBwdWJsaWM6CiAKICAgICBib29s
IHdhc0NhbmNlbGVkKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gQ2FuY2VsZWQ7IH0KICAg
ICBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCB7IHJldHVybiAobV9zdGF0dXMgPT0gTG9hZEVy
cm9yIHx8IG1fc3RhdHVzID09IERlY29kZUVycm9yKTsgfQotICAgIAotICAgIHZvaWQgc2V0UmVz
b3VyY2VMb2FkZXJPcHRpb25zKGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykg
eyBtX29wdGlvbnMgPSBvcHRpb25zOyB9CisKICAgICBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxs
YmFja3MoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2Vu
ZENhbGxiYWNrczsgfQogICAgIAogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEo
KSB7IH0KQEAgLTI0Miw2ICsyNDAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVzb3VyY2VSZXF1ZXN0
IG1fcmVzb3VyY2VSZXF1ZXN0OwogICAgIFN0cmluZyBtX2FjY2VwdDsKICAgICBPd25QdHI8Q2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0PiBtX3JlcXVlc3Q7CisgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25z
IG1fb3B0aW9uczsKICAgICBSZXNvdXJjZUxvYWRQcmlvcml0eSBtX2xvYWRQcmlvcml0eTsKIAog
ICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKQEAgLTI3OSw4ICsyNzgsNiBAQCBwcml2
YXRlOgogICAgIHVuc2lnbmVkIG1fdHlwZSA6IDM7IC8vIFR5cGUKICAgICB1bnNpZ25lZCBtX3N0
YXR1cyA6IDM7IC8vIFN0YXR1cwogCi0gICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG1fb3B0aW9u
czsKLQogI2lmbmRlZiBOREVCVUcKICAgICBib29sIG1fZGVsZXRlZDsKICAgICB1bnNpZ25lZCBt
X2xydUluZGV4OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA5NTk3NikKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgzLDYgKzgzLDEyIEBAIHN0YXRpYyBDYWNoZWRSZXNvdXJjZSogY3JlYXRlUmVzb3VyY2Uo
Q2EKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9u
cyYgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpCit7CisgICAgc3RhdGljIFJlc291cmNl
TG9hZGVyT3B0aW9ucyBvcHRpb25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVy
RGF0YSwgQWxsb3dTdG9yZWRDcmVkZW50aWFscywgQXNrQ2xpZW50Rm9yQ3Jvc3NPcmlnaW5DcmVk
ZW50aWFscywgRG9TZWN1cml0eUNoZWNrKTsKKyAgICByZXR1cm4gb3B0aW9uczsKK30KKwogQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OkNhY2hlZFJlc291cmNlTG9hZGVyKERvY3VtZW50KiBkb2N1bWVu
dCkKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAgLCBtX3JlcXVlc3RDb3VudCgwKQpA
QCAtMTMzLDIwICsxMzksMjAgQEAgQ2FjaGVkSW1hZ2UqIENhY2hlZFJlc291cmNlTG9hZGVyOjpy
ZXF1ZQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICB9Ci0gICAgQ2FjaGVk
SW1hZ2UqIHJlc291cmNlID0gc3RhdGljX2Nhc3Q8Q2FjaGVkSW1hZ2UqPihyZXF1ZXN0UmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2UsIHJlcXVlc3QsIFN0cmluZygpKSk7Cisg
ICAgQ2FjaGVkSW1hZ2UqIHJlc291cmNlID0gc3RhdGljX2Nhc3Q8Q2FjaGVkSW1hZ2UqPihyZXF1
ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2UsIHJlcXVlc3QsIFN0cmlu
ZygpLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpKTsKICAgICBpZiAoYXV0b0xvYWRJ
bWFnZXMoKSAmJiByZXNvdXJjZSAmJiByZXNvdXJjZS0+c3RpbGxOZWVkc0xvYWQoKSkKLSAgICAg
ICAgcmVzb3VyY2UtPmxvYWQodGhpcyk7CisgICAgICAgIHJlc291cmNlLT5sb2FkKHRoaXMsIGRl
ZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSk7CiAgICAgcmV0dXJuIHJlc291cmNlOwogfQog
CiBDYWNoZWRGb250KiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEZvbnQoUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRGb250Kj4o
cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2UsIHJlcXVlc3QsIFN0
cmluZygpKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZEZvbnQqPihyZXF1ZXN0UmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZSwgcmVxdWVzdCwgU3RyaW5nKCksIGRl
ZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSkpOwogfQogCiBDYWNoZWRDU1NTdHlsZVNoZWV0
KiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdENTU1N0eWxlU2hlZXQoUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIFJlc291cmNlTG9hZFByaW9yaXR5
IHByaW9yaXR5KQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRDU1NTdHlsZVNoZWV0
Kj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0LCByZXF1ZXN0
LCBjaGFyc2V0LCBwcmlvcml0eSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRDU1NT
dHlsZVNoZWV0Kj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0
LCByZXF1ZXN0LCBjaGFyc2V0LCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCksIHByaW9y
aXR5KSk7CiB9CiAKIENhY2hlZENTU1N0eWxlU2hlZXQqIENhY2hlZFJlc291cmNlTG9hZGVyOjpy
ZXF1ZXN0VXNlckNTU1N0eWxlU2hlZXQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBT
dHJpbmcmIGNoYXJzZXQpCkBAIC0xNjcsOCArMTczLDcgQEAgQ2FjaGVkQ1NTU3R5bGVTaGVldCog
Q2FjaGVkUmVzb3VyY2VMb2FkZQogICAgIGlmICghaW5DYWNoZSkKICAgICAgICAgdXNlclNoZWV0
LT5zZXRJbkNhY2hlKHRydWUpOwogCi0gICAgdXNlclNoZWV0LT5zZXRSZXNvdXJjZUxvYWRlck9w
dGlvbnMoUmVzb3VyY2VMb2FkZXJPcHRpb25zKERvTm90U2VuZENhbGxiYWNrcywgU25pZmZDb250
ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBBc2tDbGllbnRGb3JDcm9z
c09yaWdpbkNyZWRlbnRpYWxzKSk7Ci0gICAgdXNlclNoZWV0LT5sb2FkKHRoaXMsIC8qaW5jcmVt
ZW50YWwqLyBmYWxzZSwgU2tpcFNlY3VyaXR5Q2hlY2spOworICAgIHVzZXJTaGVldC0+bG9hZCh0
aGlzLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMoRG9Ob3RTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRl
bnQsIEJ1ZmZlckRhdGEsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIEFza0NsaWVudEZvckNyb3Nz
T3JpZ2luQ3JlZGVudGlhbHMsIFNraXBTZWN1cml0eUNoZWNrKSk7CiAKICAgICBpZiAoIWluQ2Fj
aGUpCiAgICAgICAgIHVzZXJTaGVldC0+c2V0SW5DYWNoZShmYWxzZSk7CkBAIC0xNzgsMTMgKzE4
MywxMyBAQCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBDYWNoZWRSZXNvdXJjZUxvYWRlCiAKIENhY2hl
ZFNjcmlwdCogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RTY3JpcHQoUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCiB7Ci0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PENhY2hlZFNjcmlwdCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6U2Ny
aXB0LCByZXF1ZXN0LCBjaGFyc2V0KSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZFNj
cmlwdCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6U2NyaXB0LCByZXF1ZXN0LCBj
aGFyc2V0LCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpKTsKIH0KIAogI2lmIEVOQUJM
RShYU0xUKQogQ2FjaGVkWFNMU3R5bGVTaGVldCogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVl
c3RYU0xTdHlsZVNoZWV0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Q2FjaGVkWFNMU3R5bGVTaGVldCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRS
ZXNvdXJjZTo6WFNMU3R5bGVTaGVldCwgcmVxdWVzdCwgU3RyaW5nKCkpKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Q2FjaGVkWFNMU3R5bGVTaGVldCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRS
ZXNvdXJjZTo6WFNMU3R5bGVTaGVldCwgcmVxdWVzdCwgU3RyaW5nKCksIGRlZmF1bHRDYWNoZWRS
ZXNvdXJjZU9wdGlvbnMoKSkpOwogfQogI2VuZGlmCiAKQEAgLTE5Myw3ICsxOTgsNyBAQCBDYWNo
ZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlCiB7CiAgICAgQVNTRVJUKGZyYW1l
KCkpOwogICAgIEFTU0VSVCh0eXBlID09IENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2ggfHwg
dHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZXJlbmRlciB8fCB0eXBlID09IENhY2hlZFJl
c291cmNlOjpMaW5rU3VicmVzb3VyY2UpOwotICAgIHJldHVybiByZXF1ZXN0UmVzb3VyY2UodHlw
ZSwgcmVxdWVzdCwgU3RyaW5nKCksIHByaW9yaXR5KTsKKyAgICByZXR1cm4gcmVxdWVzdFJlc291
cmNlKHR5cGUsIHJlcXVlc3QsIFN0cmluZygpLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25z
KCksIHByaW9yaXR5KTsKIH0KICNlbmRpZgogCkBAIC0zMTQsNyArMzE5LDcgQEAgYm9vbCBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdChDYQogICAgIHJldHVybiB0cnVlOwogfQogCi1D
YWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0
cmluZyYgY2hhcnNldCwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHksIGJvb2wgZm9yUHJl
bG9hZCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQorQ2FjaGVkUmVzb3Vy
Y2UqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6
OlR5cGUgdHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGNoYXJz
ZXQsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgUmVzb3VyY2VMb2FkUHJp
b3JpdHkgcHJpb3JpdHksIGJvb2wgZm9yUHJlbG9hZCkKIHsKICAgICBLVVJMIHVybCA9IHJlcXVl
c3QudXJsKCk7CiAgICAgCkBAIC0zNTIsNyArMzU3LDcgQEAgQ2FjaGVkUmVzb3VyY2UqIENhY2hl
ZFJlc291cmNlTG9hZGVyOjpyZQogICAgICAgICByZXNvdXJjZSA9IGxvYWRSZXNvdXJjZSh0eXBl
LCByZXF1ZXN0LCBjaGFyc2V0LCBwcmlvcml0eSwgb3B0aW9ucyk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgUmV2YWxpZGF0ZToKLSAgICAgICAgcmVzb3VyY2UgPSByZXZhbGlkYXRlUmVzb3Vy
Y2UocmVzb3VyY2UsIHByaW9yaXR5KTsKKyAgICAgICAgcmVzb3VyY2UgPSByZXZhbGlkYXRlUmVz
b3VyY2UocmVzb3VyY2UsIHByaW9yaXR5LCBvcHRpb25zKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBVc2U6CiAgICAgICAgIG1lbW9yeUNhY2hlKCktPnJlc291cmNlQWNjZXNzZWQocmVzb3Vy
Y2UpOwpAQCAtMzY5LDcgKzM3NCw3IEBAIENhY2hlZFJlc291cmNlKiBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6cmUKICAgICByZXR1cm4gcmVzb3VyY2U7CiB9CiAgICAgCi1DYWNoZWRSZXNvdXJjZSog
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJldmFsaWRhdGVSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSog
cmVzb3VyY2UsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KQorQ2FjaGVkUmVzb3VyY2Uq
IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXZhbGlkYXRlUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2Uq
IHJlc291cmNlLCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSwgY29uc3QgUmVzb3VyY2VM
b2FkZXJPcHRpb25zJiBvcHRpb25zKQogewogICAgIEFTU0VSVChyZXNvdXJjZSk7CiAgICAgQVNT
RVJUKHJlc291cmNlLT5pbkNhY2hlKCkpOwpAQCAtMzg5LDcgKzM5NCw3IEBAIENhY2hlZFJlc291
cmNlKiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmUKICAgICBtZW1vcnlDYWNoZSgpLT5hZGQobmV3
UmVzb3VyY2UpOwogICAgIAogICAgIG5ld1Jlc291cmNlLT5zZXRMb2FkUHJpb3JpdHkocHJpb3Jp
dHkpOwotICAgIG5ld1Jlc291cmNlLT5sb2FkKHRoaXMpOworICAgIG5ld1Jlc291cmNlLT5sb2Fk
KHRoaXMsIG9wdGlvbnMpOwogCiAgICAgaWYgKCF1cmxQcm90b2NvbElzRGF0YSkKICAgICAgICAg
bV92YWxpZGF0ZWRVUkxzLmFkZCh1cmwpOwpAQCAtNDEyLDggKzQxNyw3IEBAIENhY2hlZFJlc291
cmNlKiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6bG8KICAgICAgICAgcmVzb3VyY2UtPnNldEluQ2Fj
aGUodHJ1ZSk7CiAgICAgCiAgICAgcmVzb3VyY2UtPnNldExvYWRQcmlvcml0eShwcmlvcml0eSk7
Ci0gICAgcmVzb3VyY2UtPnNldFJlc291cmNlTG9hZGVyT3B0aW9ucyhvcHRpb25zKTsKLSAgICBy
ZXNvdXJjZS0+bG9hZCh0aGlzKTsKKyAgICByZXNvdXJjZS0+bG9hZCh0aGlzLCBvcHRpb25zKTsK
ICAgICAKICAgICBpZiAoIWluQ2FjaGUpIHsKICAgICAgICAgcmVzb3VyY2UtPnNldE93bmluZ0Nh
Y2hlZFJlc291cmNlTG9hZGVyKHRoaXMpOwpAQCAtNTUxLDcgKzU1NSw3IEBAIHZvaWQgQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnNldEF1dG9Mb2FkSW0KICAgICAgICAgICAgIENhY2hlZEltYWdlKiBp
bWFnZSA9IGNvbnN0X2Nhc3Q8Q2FjaGVkSW1hZ2UqPihzdGF0aWNfY2FzdDxjb25zdCBDYWNoZWRJ
bWFnZSo+KHJlc291cmNlKSk7CiAKICAgICAgICAgICAgIGlmIChpbWFnZS0+c3RpbGxOZWVkc0xv
YWQoKSkKLSAgICAgICAgICAgICAgICBpbWFnZS0+bG9hZCh0aGlzKTsKKyAgICAgICAgICAgICAg
ICBpbWFnZS0+bG9hZCh0aGlzLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpOwogICAg
ICAgICB9CiAgICAgfQogfQpAQCAtNjgxLDcgKzY4NSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OnJlcXVlc3RQcmVsb2EKICAgICBpZiAodHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6U2Ny
aXB0IHx8IHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQpCiAgICAgICAgIGVu
Y29kaW5nID0gY2hhcnNldC5pc0VtcHR5KCkgPyBtX2RvY3VtZW50LT5jaGFyc2V0KCkgOiBjaGFy
c2V0OwogCi0gICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gcmVxdWVzdFJlc291cmNlKHR5
cGUsIHJlcXVlc3QsIGVuY29kaW5nLCBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQsIHRy
dWUpOworICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IHJlcXVlc3RSZXNvdXJjZSh0eXBl
LCByZXF1ZXN0LCBlbmNvZGluZywgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpLCBSZXNv
dXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQsIHRydWUpOwogICAgIGlmICghcmVzb3VyY2UgfHwg
KG1fcHJlbG9hZHMgJiYgbV9wcmVsb2Fkcy0+Y29udGFpbnMocmVzb3VyY2UpKSkKICAgICAgICAg
cmV0dXJuOwogICAgIHJlc291cmNlLT5pbmNyZWFzZVByZWxvYWRDb3VudCgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgJ
KHJldmlzaW9uIDk1OTc2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw4ICsxMDksOCBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIC8vIEZJWE1FOiBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgUmVzb3VyY2VM
b2FkZXJPcHRpb25zIHdpbGwgYWx3YXlzIGJlIHVzZWQgY3VycmVudGx5LgogICAgIC8vIEl0IGlz
IHBsdW1iZWQgZm9yIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMjI1
IC4KLSAgICBDYWNoZWRSZXNvdXJjZSogcmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpU
eXBlLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIFJlc291cmNlTG9h
ZFByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkLCBib29sIGlzUHJlbG9h
ZCA9IGZhbHNlLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmID0gUmVzb3VyY2VMb2FkZXJP
cHRpb25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgQWxsb3dTdG9y
ZWRDcmVkZW50aWFscywgQXNrQ2xpZW50Rm9yQ3Jvc3NPcmlnaW5DcmVkZW50aWFscykpOwotICAg
IENhY2hlZFJlc291cmNlKiByZXZhbGlkYXRlUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqLCBSZXNv
dXJjZUxvYWRQcmlvcml0eSk7CisgICAgQ2FjaGVkUmVzb3VyY2UqIHJlcXVlc3RSZXNvdXJjZShD
YWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBjaGFy
c2V0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBSZXNvdXJjZUxvYWRQcmlvcml0eSA9
IFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCwgYm9vbCBpc1ByZWxvYWQgPSBmYWxzZSk7
CisgICAgQ2FjaGVkUmVzb3VyY2UqIHJldmFsaWRhdGVSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSos
IFJlc291cmNlTG9hZFByaW9yaXR5LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKICAg
ICBDYWNoZWRSZXNvdXJjZSogbG9hZFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlLCBSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIFJlc291cmNlTG9hZFByaW9yaXR5
LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKICAgICB2b2lkIHJlcXVlc3RQcmVsb2Fk
KENhY2hlZFJlc291cmNlOjpUeXBlLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNo
YXJzZXQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAkocmV2aXNpb24gOTU5NzYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzQsMTAgKzc0LDkgQEAgc3RhdGljIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0VHlwZSBj
YWNoZQogfQogI2VuZGlmCiAKLUNhY2hlZFJlc291cmNlUmVxdWVzdDo6Q2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0KENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciwgQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlLCBib29sIGluY3JlbWVudGFsKQorQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0OjpDYWNoZWRSZXNvdXJjZVJlcXVlc3QoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJl
c291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAgICAgOiBtX2NhY2hlZFJl
c291cmNlTG9hZGVyKGNhY2hlZFJlc291cmNlTG9hZGVyKQogICAgICwgbV9yZXNvdXJjZShyZXNv
dXJjZSkKLSAgICAsIG1faW5jcmVtZW50YWwoaW5jcmVtZW50YWwpCiAgICAgLCBtX211bHRpcGFy
dChmYWxzZSkKICAgICAsIG1fZmluaXNoaW5nKGZhbHNlKQogewpAQCAtODcsOSArODYsOSBAQCBD
YWNoZWRSZXNvdXJjZVJlcXVlc3Q6On5DYWNoZWRSZXNvdXJjZVJlCiB7CiB9CiAKLVBhc3NPd25Q
dHI8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0PiBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmxvYWQoQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdXJjZSog
cmVzb3VyY2UsIGJvb2wgaW5jcmVtZW50YWwsIFNlY3VyaXR5Q2hlY2tQb2xpY3kgc2VjdXJpdHlD
aGVjaywgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQorUGFzc093blB0cjxD
YWNoZWRSZXNvdXJjZVJlcXVlc3Q+IENhY2hlZFJlc291cmNlUmVxdWVzdDo6bG9hZChDYWNoZWRS
ZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291cmNlKiByZXNv
dXJjZSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogewotICAgIE93blB0
cjxDYWNoZWRSZXNvdXJjZVJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdFB0cihuZXcgQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0KGNhY2hlZFJlc291cmNlTG9hZGVyLCByZXNvdXJjZSwgaW5jcmVtZW50YWwp
KTsKKyAgICBPd25QdHI8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRQdHIo
bmV3IENhY2hlZFJlc291cmNlUmVxdWVzdChjYWNoZWRSZXNvdXJjZUxvYWRlciwgcmVzb3VyY2Up
KTsKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgPSByZXNvdXJjZS0+cmVz
b3VyY2VSZXF1ZXN0KCk7CiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCkBAIC0xMjQsNyArMTIzLDcg
QEAgUGFzc093blB0cjxDYWNoZWRSZXNvdXJjZVJlcXVlc3Q+IENhY2hlZAogICAgIFJlc291cmNl
TG9hZFByaW9yaXR5IHByaW9yaXR5ID0gcmVzb3VyY2UtPmxvYWRQcmlvcml0eSgpOwogICAgIHJl
c291cmNlUmVxdWVzdC5zZXRQcmlvcml0eShwcmlvcml0eSk7CiAKLSAgICBSZWZQdHI8U3VicmVz
b3VyY2VMb2FkZXI+IGxvYWRlciA9IHJlc291cmNlTG9hZFNjaGVkdWxlcigpLT5zY2hlZHVsZVN1
YnJlc291cmNlTG9hZChjYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSwg
cmVxdWVzdC5nZXQoKSwgcmVzb3VyY2VSZXF1ZXN0LCBwcmlvcml0eSwgc2VjdXJpdHlDaGVjaywg
b3B0aW9ucyk7CisgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSByZXNvdXJj
ZUxvYWRTY2hlZHVsZXIoKS0+c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoY2FjaGVkUmVzb3VyY2VM
b2FkZXItPmRvY3VtZW50KCktPmZyYW1lKCksIHJlcXVlc3QuZ2V0KCksIHJlc291cmNlUmVxdWVz
dCwgcHJpb3JpdHksIG9wdGlvbnMpOwogICAgIGlmICghbG9hZGVyIHx8IGxvYWRlci0+cmVhY2hl
ZFRlcm1pbmFsU3RhdGUoKSkgewogICAgICAgICAvLyBGSVhNRTogV2hhdCBpZiByZXNvdXJjZXMg
aW4gb3RoZXIgZnJhbWVzIHdlcmUgd2FpdGluZyBmb3IgdGhpcyByZXZhbGlkYXRpb24/CiAgICAg
ICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJDYW5ub3Qgc3RhcnQgbG9hZGluZyAnJXMnIiwgcmVz
b3VyY2UtPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CkBAIC0yNzEsNyArMjcwLDcg
QEAgdm9pZCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmRpZFJlY2VpdmVEYQogICAgICAgICAvLyBU
aGUgcmVzb3VyY2UgZGF0YSB3aWxsIGNoYW5nZSBhcyB0aGUgbmV4dCBwYXJ0IGlzIGxvYWRlZCwg
c28gd2UgbmVlZCB0byBtYWtlIGEgY29weS4KICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Y29waWVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwogICAgICAgICBt
X3Jlc291cmNlLT5kYXRhKGNvcGllZERhdGEucmVsZWFzZSgpLCB0cnVlKTsKLSAgICB9IGVsc2Ug
aWYgKG1faW5jcmVtZW50YWwpCisgICAgfSBlbHNlCiAgICAgICAgIG1fcmVzb3VyY2UtPmRhdGEo
bG9hZGVyLT5yZXNvdXJjZURhdGEoKSwgZmFsc2UpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5oCShyZXZpc2lv
biA5NTk3NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJl
cXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTMgKzQzLDEzIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgIGNsYXNzIENhY2hlZFJlc291cmNlUmVxdWVzdCA6IHByaXZhdGUgU3VicmVz
b3VyY2VMb2FkZXJDbGllbnQgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NPd25Q
dHI8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0PiBsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiwgQ2Fj
aGVkUmVzb3VyY2UqLCBib29sIGluY3JlbWVudGFsLCBTZWN1cml0eUNoZWNrUG9saWN5LCBjb25z
dCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKKyAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8Q2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0PiBsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiwgQ2FjaGVkUmVz
b3VyY2UqLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKICAgICAgICAgfkNhY2hlZFJl
c291cmNlUmVxdWVzdCgpOwogCiAgICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRS
ZXNvdXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXI7IH0K
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIENhY2hlZFJlc291cmNlUmVxdWVzdChDYWNoZWRSZXNv
dXJjZUxvYWRlciosIENhY2hlZFJlc291cmNlKiwgYm9vbCBpbmNyZW1lbnRhbCk7CisgICAgICAg
IENhY2hlZFJlc291cmNlUmVxdWVzdChDYWNoZWRSZXNvdXJjZUxvYWRlciosIENhY2hlZFJlc291
cmNlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoU3VicmVzb3VyY2VM
b2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoU3VicmVzb3VyY2VMb2FkZXIqLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
RGF0YShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpOwpAQCAtNjEsNyArNjEs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRl
cj4gbV9sb2FkZXI7CiAgICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBtX2NhY2hlZFJlc291
cmNlTG9hZGVyOwogICAgICAgICBDYWNoZWRSZXNvdXJjZSogbV9yZXNvdXJjZTsKLSAgICAgICAg
Ym9vbCBtX2luY3JlbWVudGFsOwogICAgICAgICBib29sIG1fbXVsdGlwYXJ0OwogICAgICAgICBi
b29sIG1fZmluaXNoaW5nOwogICAgIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNv
bi9JY29uTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNv
bi9JY29uTG9hZGVyLmNwcAkocmV2aXNpb24gOTU5NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaWNvbi9JY29uTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCB2
b2lkIEljb25Mb2FkZXI6OnN0YXJ0TG9hZGluZygpCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291
cmNlUmVxdWVzdChtX2ZyYW1lLT5sb2FkZXIoKS0+aWNvbigpLT51cmwoKSk7CiAgICAgcmVzb3Vy
Y2VSZXF1ZXN0LnNldFByaW9yaXR5KFJlc291cmNlTG9hZFByaW9yaXR5TG93KTsKIAotICAgIFJl
ZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gcmVzb3VyY2VMb2FkU2NoZWR1bGVyKCkt
PnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKG1fZnJhbWUsIHRoaXMsIHJlc291cmNlUmVxdWVzdCwg
UmVzb3VyY2VMb2FkUHJpb3JpdHlMb3csIERvU2VjdXJpdHlDaGVjaywgUmVzb3VyY2VMb2FkZXJP
cHRpb25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgRG9Ob3RBbGxv
d1N0b3JlZENyZWRlbnRpYWxzLCBEb05vdEFza0NsaWVudEZvckNyb3NzT3JpZ2luQ3JlZGVudGlh
bHMpKTsKKyAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IHJlc291cmNlTG9h
ZFNjaGVkdWxlcigpLT5zY2hlZHVsZVN1YnJlc291cmNlTG9hZChtX2ZyYW1lLCB0aGlzLCByZXNv
dXJjZVJlcXVlc3QsIFJlc291cmNlTG9hZFByaW9yaXR5TG93LCBSZXNvdXJjZUxvYWRlck9wdGlv
bnMoU2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBEb05vdEFsbG93U3Rv
cmVkQ3JlZGVudGlhbHMsIERvTm90QXNrQ2xpZW50Rm9yQ3Jvc3NPcmlnaW5DcmVkZW50aWFscywg
RG9TZWN1cml0eUNoZWNrKSk7CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIExPR19FUlJPUigi
RmFpbGVkIHRvIHN0YXJ0IGxvYWQgZm9yIGljb24gYXQgdXJsICVzIiwgbV9mcmFtZS0+bG9hZGVy
KCktPmljb24oKS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>