<?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>122398</bug_id>
          
          <creation_ts>2013-10-05 17:59:17 -0700</creation_ts>
          <short_desc>CTTE: Use references more for the Document parser</short_desc>
          <delta_ts>2013-10-05 18:06:48 -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>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>936676</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-10-05 17:59:17 -0700</bug_when>
    <thetext>CTTE: Use references more for the Document parser</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936677</commentid>
    <comment_count>1</comment_count>
      <attachid>213478</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-10-05 18:00:23 -0700</bug_when>
    <thetext>Created attachment 213478
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936679</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-10-05 18:06:48 -0700</bug_when>
    <thetext>Committed r156980: &lt;http://trac.webkit.org/changeset/156980&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213478</attachid>
            <date>2013-10-05 18:00:23 -0700</date>
            <delta_ts>2013-10-05 18:05:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122398-20131005180022.patch</filename>
            <type>text/plain</type>
            <size>61546</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1Njk3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEzLTEwLTA1ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ1RURTogVXNlIHJlZmVyZW5jZXMgbW9y
ZSBmb3IgdGhlIERvY3VtZW50IHBhcnNlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ2xhcmlmeSB0aGUgY29uc3RydWN0aW9uIHNlbWFudGljcyBvZiBE
b2N1bWVudCBwYXJzZXJzLgorCiAyMDEzLTEwLTA1ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBEZWZhdWx0IGluaXRpYWxpemUgU2V0dGluZ3M6OnNl
dEZpeGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdDb250ZXh0KCkgdG8gdHJ1ZQpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmNwcAkocmV2
aXNpb24gMTU2OTc4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQ
YXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlcjo6RGVjb2RlZERhdGFEb2N1bWVu
dFBhcnNlcihEb2N1bWVudCogZG9jdW1lbnQpCitEZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyOjpE
ZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IERvY3Vt
ZW50UGFyc2VyKGRvY3VtZW50KQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RlY29k
ZWREYXRhRG9jdW1lbnRQYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oCShyZXZpc2lvbiAxNTY5NzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgd2VsbEZvcm1lZCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IERlY29kZWRE
YXRhRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQqKTsKKyAgICBleHBsaWNpdCBEZWNvZGVkRGF0YURv
Y3VtZW50UGFyc2VyKERvY3VtZW50Jik7CiAKIHByaXZhdGU6CiAgICAgLy8gYXBwZW5kIGlzIHVz
ZWQgYnkgRG9jdW1lbnRXcml0ZXI6OnJlcGxhY2VEb2N1bWVudC4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAkocmV2aXNpb24gMTU2OTc3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIzMyw3ICsyMjMzLDcgQEAgdm9pZCBEb2N1bWVu
dDo6c2V0VmlzdWFsbHlPcmRlcmVkKCkKIFBhc3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IERvY3Vt
ZW50OjpjcmVhdGVQYXJzZXIoKQogewogICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBwcm9iYWJs
eSBwYXNzIHRoZSBmcmFtZSBpbnN0ZWFkCi0gICAgcmV0dXJuIFhNTERvY3VtZW50UGFyc2VyOjpj
cmVhdGUodGhpcywgdmlldygpKTsKKyAgICByZXR1cm4gWE1MRG9jdW1lbnRQYXJzZXI6OmNyZWF0
ZSgqdGhpcywgdmlldygpKTsKIH0KIAogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKiBEb2N1bWVu
dDo6c2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRGcmFnbWVudC5jcHAJKHJldmlzaW9uIDE1Njk3NykKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsMTIgKzc2
LDEyIEBAIFBhc3NSZWZQdHI8Tm9kZT4gRG9jdW1lbnRGcmFnbWVudDo6Y2xvbmUKIAogdm9pZCBE
b2N1bWVudEZyYWdtZW50OjpwYXJzZUhUTUwoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEVsZW1lbnQq
IGNvbnRleHRFbGVtZW50LCBQYXJzZXJDb250ZW50UG9saWN5IHBhcnNlckNvbnRlbnRQb2xpY3kp
CiB7Ci0gICAgSFRNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQoc291cmNl
LCB0aGlzLCBjb250ZXh0RWxlbWVudCwgcGFyc2VyQ29udGVudFBvbGljeSk7CisgICAgSFRNTERv
Y3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQoc291cmNlLCAqdGhpcywgY29udGV4
dEVsZW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3kpOwogfQogCiBib29sIERvY3VtZW50RnJhZ21l
bnQ6OnBhcnNlWE1MKGNvbnN0IFN0cmluZyYgc291cmNlLCBFbGVtZW50KiBjb250ZXh0RWxlbWVu
dCwgUGFyc2VyQ29udGVudFBvbGljeSBwYXJzZXJDb250ZW50UG9saWN5KQogewotICAgIHJldHVy
biBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50KHNvdXJjZSwgdGhpcywg
Y29udGV4dEVsZW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3kpOworICAgIHJldHVybiBYTUxEb2N1
bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50KHNvdXJjZSwgKnRoaXMsIGNvbnRleHRF
bGVtZW50LCBwYXJzZXJDb250ZW50UG9saWN5KTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRQYXJzZXIuY3BwCShyZXZpc2lvbiAxNTY5NzcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMiArMzAsMTEg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Eb2N1bWVudFBhcnNlcjo6RG9jdW1lbnRQYXJz
ZXIoRG9jdW1lbnQqIGRvY3VtZW50KQorRG9jdW1lbnRQYXJzZXI6OkRvY3VtZW50UGFyc2VyKERv
Y3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fc3RhdGUoUGFyc2luZ1N0YXRlKQogICAgICwgbV9k
b2N1bWVudFdhc0xvYWRlZEFzUGFydE9mTmF2aWdhdGlvbihmYWxzZSkKLSAgICAsIG1fZG9jdW1l
bnQoZG9jdW1lbnQpCisgICAgLCBtX2RvY3VtZW50KCZkb2N1bWVudCkKIHsKLSAgICBBU1NFUlQo
ZG9jdW1lbnQpOwogfQogCiBEb2N1bWVudFBhcnNlcjo6fkRvY3VtZW50UGFyc2VyKCkKQEAgLTc2
LDUgKzc1LDQgQEAgdm9pZCBEb2N1bWVudFBhcnNlcjo6cmVzdW1lU2NoZWR1bGVkVGFzawogewog
fQogCi19OwotCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRQYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRQYXJzZXIuaAkocmV2aXNpb24gMTU2OTc4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50UGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZVNjaGVkdWxlZFRhc2tzKCk7CiAKIHByb3RlY3RlZDoK
LSAgICBleHBsaWNpdCBEb2N1bWVudFBhcnNlcihEb2N1bWVudCopOworICAgIGV4cGxpY2l0IERv
Y3VtZW50UGFyc2VyKERvY3VtZW50Jik7CiAKIHByaXZhdGU6CiAgICAgZW51bSBQYXJzZXJTdGF0
ZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUmF3RGF0YURvY3VtZW50UGFyc2VyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oCShy
ZXZpc2lvbiAxNTY5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUmF3RGF0YURvY3VtZW50UGFy
c2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBSYXdEYXRhRG9jdW1lbnRQYXJzZXIgOiBwdWJsaWMgRG9jdW1lbnRQYXJzZXIg
ewogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IFJhd0RhdGFEb2N1bWVudFBhcnNlcihEb2N1bWVu
dCogZG9jdW1lbnQpCisgICAgZXhwbGljaXQgUmF3RGF0YURvY3VtZW50UGFyc2VyKERvY3VtZW50
JiBkb2N1bWVudCkKICAgICAgICAgOiBEb2N1bWVudFBhcnNlcihkb2N1bWVudCkKICAgICB7CiAg
ICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGFibGVEb2N1bWVudFBh
cnNlci5jcHAJKHJldmlzaW9uIDE1Njk3NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRh
YmxlRG9jdW1lbnRQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNSArMzMsMTUgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXI6OlNjcmlw
dGFibGVEb2N1bWVudFBhcnNlcihEb2N1bWVudCogZG9jdW1lbnQsIFBhcnNlckNvbnRlbnRQb2xp
Y3kgcGFyc2VyQ29udGVudFBvbGljeSkKK1NjcmlwdGFibGVEb2N1bWVudFBhcnNlcjo6U2NyaXB0
YWJsZURvY3VtZW50UGFyc2VyKERvY3VtZW50JiBkb2N1bWVudCwgUGFyc2VyQ29udGVudFBvbGlj
eSBwYXJzZXJDb250ZW50UG9saWN5KQogICAgIDogRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlcihk
b2N1bWVudCkKICAgICAsIG1fd2FzQ3JlYXRlZEJ5U2NyaXB0KGZhbHNlKQogICAgICwgbV9wYXJz
ZXJDb250ZW50UG9saWN5KHBhcnNlckNvbnRlbnRQb2xpY3kpCiB7Ci0gICAgaWYgKCFwbHVnaW5D
b250ZW50SXNBbGxvd2VkKG1fcGFyc2VyQ29udGVudFBvbGljeSkgJiYgKCFkb2N1bWVudC0+c2V0
dGluZ3MoKSB8fCBkb2N1bWVudC0+c2V0dGluZ3MoKS0+dW5zYWZlUGx1Z2luUGFzdGluZ0VuYWJs
ZWQoKSkpCisgICAgaWYgKCFwbHVnaW5Db250ZW50SXNBbGxvd2VkKG1fcGFyc2VyQ29udGVudFBv
bGljeSkgJiYgKCFkb2N1bWVudC5zZXR0aW5ncygpIHx8IGRvY3VtZW50LnNldHRpbmdzKCktPnVu
c2FmZVBsdWdpblBhc3RpbmdFbmFibGVkKCkpKQogICAgICAgICBtX3BhcnNlckNvbnRlbnRQb2xp
Y3kgPSBhbGxvd1BsdWdpbkNvbnRlbnQobV9wYXJzZXJDb250ZW50UG9saWN5KTsKIAotICAgIGlm
IChzY3JpcHRpbmdDb250ZW50SXNBbGxvd2VkKG1fcGFyc2VyQ29udGVudFBvbGljeSkgJiYgKGRv
Y3VtZW50LT5zZXR0aW5ncygpICYmICFkb2N1bWVudC0+c2V0dGluZ3MoKS0+c2NyaXB0TWFya3Vw
RW5hYmxlZCgpKSkKKyAgICBpZiAoc2NyaXB0aW5nQ29udGVudElzQWxsb3dlZChtX3BhcnNlckNv
bnRlbnRQb2xpY3kpICYmIChkb2N1bWVudC5zZXR0aW5ncygpICYmICFkb2N1bWVudC5zZXR0aW5n
cygpLT5zY3JpcHRNYXJrdXBFbmFibGVkKCkpKQogICAgICAgICBtX3BhcnNlckNvbnRlbnRQb2xp
Y3kgPSBkaXNhbGxvd1NjcmlwdGluZ0NvbnRlbnQobV9wYXJzZXJDb250ZW50UG9saWN5KTsKIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIu
aAkocmV2aXNpb24gMTU2OTc3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGFibGVEb2N1
bWVudFBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAg
ICBQYXJzZXJDb250ZW50UG9saWN5IHBhcnNlckNvbnRlbnRQb2xpY3koKSB7IHJldHVybiBtX3Bh
cnNlckNvbnRlbnRQb2xpY3k7IH0KIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IFNjcmlwdGFi
bGVEb2N1bWVudFBhcnNlcihEb2N1bWVudCosIFBhcnNlckNvbnRlbnRQb2xpY3kgPSBBbGxvd1Nj
cmlwdGluZ0NvbnRlbnQpOworICAgIGV4cGxpY2l0IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihE
b2N1bWVudCYsIFBhcnNlckNvbnRlbnRQb2xpY3kgPSBBbGxvd1NjcmlwdGluZ0NvbnRlbnQpOwog
CiBwcml2YXRlOgogICAgIHZpcnR1YWwgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKiBhc1Njcmlw
dGFibGVEb2N1bWVudFBhcnNlcigpIHsgcmV0dXJuIHRoaXM7IH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxNTY5NzcpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTAsMTcgKzUwLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKICAgICAKLWNsYXNzIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2Vy
IDogcHVibGljIEhUTUxEb2N1bWVudFBhcnNlciB7CitjbGFzcyBGVFBEaXJlY3RvcnlEb2N1bWVu
dFBhcnNlciBGSU5BTCA6IHB1YmxpYyBIVE1MRG9jdW1lbnRQYXJzZXIgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyPiBjcmVhdGUoSFRN
TERvY3VtZW50KiBkb2N1bWVudCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGVFBEaXJlY3RvcnlE
b2N1bWVudFBhcnNlcj4gY3JlYXRlKEhUTUxEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyKGRvY3Vt
ZW50KSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZChQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+KTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoKCk7CisgICAgdmlydHVhbCB2b2lkIGFw
cGVuZChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoKCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNXYWl0aW5nRm9yU2NyaXB0
cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzV2FpdGluZ0Zv
clNjcmlwdHMoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgaW5saW5l
IHZvaWQgY2hlY2tCdWZmZXIoaW50IGxlbiA9IDEwKQogICAgIHsKQEAgLTc1LDcgKzc1LDcgQEAg
cHVibGljOgogICAgIH0KICAgICAgICAgCiBwcml2YXRlOgotICAgIEZUUERpcmVjdG9yeURvY3Vt
ZW50UGFyc2VyKEhUTUxEb2N1bWVudCopOworICAgIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2Vy
KEhUTUxEb2N1bWVudCYpOwogCiAgICAgLy8gVGhlIHBhcnNlciB3aWxsIGF0dGVtcHQgdG8gbG9h
ZCB0aGUgZG9jdW1lbnQgdGVtcGxhdGUgc3BlY2lmaWVkIHZpYSB0aGUgcHJlZmVyZW5jZQogICAg
IC8vIEZhaWxpbmcgdGhhdCwgaXQgd2lsbCBmYWxsIGJhY2sgYW5kIGNyZWF0ZSB0aGUgYmFzaWMg
ZG9jdW1lbnQgd2hpY2ggd2lsbCBoYXZlIGEgbWluaW1hbApAQCAtOTksNyArOTksNyBAQCBwcml2
YXRlOgogICAgIExpc3RTdGF0ZSBtX2xpc3RTdGF0ZTsKIH07CiAKLUZUUERpcmVjdG9yeURvY3Vt
ZW50UGFyc2VyOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcihIVE1MRG9jdW1lbnQqIGRvY3Vt
ZW50KQorRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OkZUUERpcmVjdG9yeURvY3VtZW50UGFy
c2VyKEhUTUxEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBIVE1MRG9jdW1lbnRQYXJzZXIoZG9j
dW1lbnQsIGZhbHNlKQogICAgICwgbV9za2lwTEYoZmFsc2UpCiAgICAgLCBtX3NpemUoMjU0KQpA
QCAtNDM1LDcgKzQzNSw3IEBAIEZUUERpcmVjdG9yeURvY3VtZW50OjpGVFBEaXJlY3RvcnlEb2N1
bWUKIAogUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gRlRQRGlyZWN0b3J5RG9jdW1lbnQ6OmNy
ZWF0ZVBhcnNlcigpCiB7Ci0gICAgcmV0dXJuIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpj
cmVhdGUodGhpcyk7CisgICAgcmV0dXJuIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpjcmVh
dGUoKnRoaXMpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3Bw
CShyZXZpc2lvbiAxNTY5NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MCw3ICsyODAsNyBAQCB2b2lkIEhUTUxEb2N1bWVudDo6
cmVsZWFzZUV2ZW50cygpCiBQYXNzUmVmUHRyPERvY3VtZW50UGFyc2VyPiBIVE1MRG9jdW1lbnQ6
OmNyZWF0ZVBhcnNlcigpCiB7CiAgICAgYm9vbCByZXBvcnRFcnJvcnMgPSBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmNvbGxlY3RpbmdIVE1MUGFyc2VFcnJvcnModGhpcy0+cGFnZSgpKTsKLSAg
ICByZXR1cm4gSFRNTERvY3VtZW50UGFyc2VyOjpjcmVhdGUodGhpcywgcmVwb3J0RXJyb3JzKTsK
KyAgICByZXR1cm4gSFRNTERvY3VtZW50UGFyc2VyOjpjcmVhdGUoKnRoaXMsIHJlcG9ydEVycm9y
cyk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAJKHJldmlzaW9uIDE1Njk3NykKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYzLDkgKzYzLDkgQEAgSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6SFRNTFZpZXdTb3Vy
Y2VEbwogUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6
Y3JlYXRlUGFyc2VyKCkKIHsKICAgICBpZiAobV90eXBlID09ICJ0ZXh0L2h0bWwiIHx8IG1fdHlw
ZSA9PSAiYXBwbGljYXRpb24veGh0bWwreG1sIiB8fCBtX3R5cGUgPT0gImltYWdlL3N2Zyt4bWwi
IHx8IERPTUltcGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKG1fdHlwZSkpCi0gICAgICAgIHJl
dHVybiBIVE1MVmlld1NvdXJjZVBhcnNlcjo6Y3JlYXRlKHRoaXMpOworICAgICAgICByZXR1cm4g
SFRNTFZpZXdTb3VyY2VQYXJzZXI6OmNyZWF0ZSgqdGhpcyk7CiAKLSAgICByZXR1cm4gVGV4dFZp
ZXdTb3VyY2VQYXJzZXI6OmNyZWF0ZSh0aGlzKTsKKyAgICByZXR1cm4gVGV4dFZpZXdTb3VyY2VQ
YXJzZXI6OmNyZWF0ZSgqdGhpcyk7CiB9CiAKIHZvaWQgSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6
Y3JlYXRlQ29udGFpbmluZ1RhYmxlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VE
b2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3Vt
ZW50LmNwcAkocmV2aXNpb24gMTU2OTc4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURv
Y3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsOSArNzYsOSBAQCBwcml2YXRlOgogICAg
IEltYWdlRG9jdW1lbnQqIG1fZG9jOwogfTsKICAgICAKLWNsYXNzIEltYWdlRG9jdW1lbnRQYXJz
ZXIgOiBwdWJsaWMgUmF3RGF0YURvY3VtZW50UGFyc2VyIHsKK2NsYXNzIEltYWdlRG9jdW1lbnRQ
YXJzZXIgRklOQUwgOiBwdWJsaWMgUmF3RGF0YURvY3VtZW50UGFyc2VyIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZURvY3VtZW50UGFyc2VyPiBjcmVhdGUoSW1hZ2VEb2N1
bWVudCogZG9jdW1lbnQpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VEb2N1bWVudFBhcnNl
cj4gY3JlYXRlKEltYWdlRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJbWFnZURvY3VtZW50UGFyc2VyKGRvY3VtZW50KSk7CiAgICAgfQpAQCAt
ODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogcHJpdmF0ZToKLSAgICBJbWFnZURv
Y3VtZW50UGFyc2VyKEltYWdlRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIEltYWdlRG9jdW1lbnRQ
YXJzZXIoSW1hZ2VEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgICAgIDogUmF3RGF0YURvY3VtZW50
UGFyc2VyKGRvY3VtZW50KQogICAgIHsKICAgICB9CkBAIC0xOTAsNyArMTkwLDcgQEAgSW1hZ2VE
b2N1bWVudDo6SW1hZ2VEb2N1bWVudChGcmFtZSogZnJhbQogICAgIAogUGFzc1JlZlB0cjxEb2N1
bWVudFBhcnNlcj4gSW1hZ2VEb2N1bWVudDo6Y3JlYXRlUGFyc2VyKCkKIHsKLSAgICByZXR1cm4g
SW1hZ2VEb2N1bWVudFBhcnNlcjo6Y3JlYXRlKHRoaXMpOworICAgIHJldHVybiBJbWFnZURvY3Vt
ZW50UGFyc2VyOjpjcmVhdGUoKnRoaXMpOwogfQogCiB2b2lkIEltYWdlRG9jdW1lbnQ6OmNyZWF0
ZURvY3VtZW50U3RydWN0dXJlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50
LmNwcAkocmV2aXNpb24gMTU2OTc4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3Vt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTUgKzUwLDE1IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIC8vIEZJWE1FOiBTaGFyZSBtb3Jl
IGNvZGUgd2l0aCBQbHVnaW5Eb2N1bWVudFBhcnNlci4KLWNsYXNzIE1lZGlhRG9jdW1lbnRQYXJz
ZXIgOiBwdWJsaWMgUmF3RGF0YURvY3VtZW50UGFyc2VyIHsKK2NsYXNzIE1lZGlhRG9jdW1lbnRQ
YXJzZXIgRklOQUwgOiBwdWJsaWMgUmF3RGF0YURvY3VtZW50UGFyc2VyIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYURvY3VtZW50UGFyc2VyPiBjcmVhdGUoTWVkaWFEb2N1
bWVudCogZG9jdW1lbnQpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFEb2N1bWVudFBhcnNl
cj4gY3JlYXRlKE1lZGlhRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBNZWRpYURvY3VtZW50UGFyc2VyKGRvY3VtZW50KSk7CiAgICAgfQogICAg
IAogcHJpdmF0ZToKLSAgICBNZWRpYURvY3VtZW50UGFyc2VyKERvY3VtZW50KiBkb2N1bWVudCkK
KyAgICBNZWRpYURvY3VtZW50UGFyc2VyKERvY3VtZW50JiBkb2N1bWVudCkKICAgICAgICAgOiBS
YXdEYXRhRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpCiAgICAgICAgICwgbV9tZWRpYUVsZW1lbnQo
MCkKICAgICB7CkBAIC0xMzMsNyArMTMzLDcgQEAgTWVkaWFEb2N1bWVudDo6fk1lZGlhRG9jdW1l
bnQoKQogCiBQYXNzUmVmUHRyPERvY3VtZW50UGFyc2VyPiBNZWRpYURvY3VtZW50OjpjcmVhdGVQ
YXJzZXIoKQogewotICAgIHJldHVybiBNZWRpYURvY3VtZW50UGFyc2VyOjpjcmVhdGUodGhpcyk7
CisgICAgcmV0dXJuIE1lZGlhRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZSgqdGhpcyk7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgSFRNTFZpZGVvRWxlbWVudCogZGVzY2VuZGVudFZpZGVvRWxlbWVudChOb2Rl
KiBub2RlKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAJKHJldmlz
aW9uIDE1Njk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NCwxNSArNDQsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogLy8gRklYTUU6IFNoYXJlIG1vcmUgY29kZSB3aXRo
IE1lZGlhRG9jdW1lbnRQYXJzZXIuCi1jbGFzcyBQbHVnaW5Eb2N1bWVudFBhcnNlciA6IHB1Ymxp
YyBSYXdEYXRhRG9jdW1lbnRQYXJzZXIgeworY2xhc3MgUGx1Z2luRG9jdW1lbnRQYXJzZXIgRklO
QUwgOiBwdWJsaWMgUmF3RGF0YURvY3VtZW50UGFyc2VyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxQbHVnaW5Eb2N1bWVudFBhcnNlcj4gY3JlYXRlKFBsdWdpbkRvY3VtZW50KiBk
b2N1bWVudCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5Eb2N1bWVudFBhcnNlcj4gY3Jl
YXRlKFBsdWdpbkRvY3VtZW50JiBkb2N1bWVudCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgUGx1Z2luRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpKTsKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgUGx1Z2luRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIFBs
dWdpbkRvY3VtZW50UGFyc2VyKERvY3VtZW50JiBkb2N1bWVudCkKICAgICAgICAgOiBSYXdEYXRh
RG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpCiAgICAgICAgICwgbV9lbWJlZEVsZW1lbnQoMCkKICAg
ICB7CkBAIC0xNDEsNyArMTQxLDcgQEAgUGx1Z2luRG9jdW1lbnQ6OlBsdWdpbkRvY3VtZW50KEZy
YW1lKiBmcgogCiBQYXNzUmVmUHRyPERvY3VtZW50UGFyc2VyPiBQbHVnaW5Eb2N1bWVudDo6Y3Jl
YXRlUGFyc2VyKCkKIHsKLSAgICByZXR1cm4gUGx1Z2luRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZSh0
aGlzKTsKKyAgICByZXR1cm4gUGx1Z2luRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZSgqdGhpcyk7CiB9
CiAKIFdpZGdldCogUGx1Z2luRG9jdW1lbnQ6OnBsdWdpbldpZGdldCgpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL1RleHREb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9UZXh0RG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxNTY5NzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL1RleHREb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcg
QEAgVGV4dERvY3VtZW50OjpUZXh0RG9jdW1lbnQoRnJhbWUqIGZyYW1lLAogCiBQYXNzUmVmUHRy
PERvY3VtZW50UGFyc2VyPiBUZXh0RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiB7Ci0gICAgcmV0
dXJuIFRleHREb2N1bWVudFBhcnNlcjo6Y3JlYXRlKHRoaXMpOworICAgIHJldHVybiBUZXh0RG9j
dW1lbnRQYXJzZXI6OmNyZWF0ZSgqdGhpcyk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAJKHJldmlzaW9u
IDE1Njk3NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25T
aXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDI2ICsxNTIsMjYgQEAgdm9pZCBIVE1MQ29u
c3RydWN0aW9uU2l0ZTo6ZXhlY3V0ZVF1ZXVlZAogICAgIC8vIFdlIG1pZ2h0IGJlIGRldGFjaGVk
IG5vdy4KIH0KIAotSFRNTENvbnN0cnVjdGlvblNpdGU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlKERv
Y3VtZW50KiBkb2N1bWVudCwgUGFyc2VyQ29udGVudFBvbGljeSBwYXJzZXJDb250ZW50UG9saWN5
LCB1bnNpZ25lZCBtYXhpbXVtRE9NVHJlZURlcHRoKQotICAgIDogbV9kb2N1bWVudChkb2N1bWVu
dCkKLSAgICAsIG1fYXR0YWNobWVudFJvb3QoZG9jdW1lbnQpCitIVE1MQ29uc3RydWN0aW9uU2l0
ZTo6SFRNTENvbnN0cnVjdGlvblNpdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXJzZXJDb250ZW50
UG9saWN5IHBhcnNlckNvbnRlbnRQb2xpY3ksIHVuc2lnbmVkIG1heGltdW1ET01UcmVlRGVwdGgp
CisgICAgOiBtX2RvY3VtZW50KCZkb2N1bWVudCkKKyAgICAsIG1fYXR0YWNobWVudFJvb3QoJmRv
Y3VtZW50KQogICAgICwgbV9wYXJzZXJDb250ZW50UG9saWN5KHBhcnNlckNvbnRlbnRQb2xpY3kp
CiAgICAgLCBtX2lzUGFyc2luZ0ZyYWdtZW50KGZhbHNlKQogICAgICwgbV9yZWRpcmVjdEF0dGFj
aFRvRm9zdGVyUGFyZW50KGZhbHNlKQogICAgICwgbV9tYXhpbXVtRE9NVHJlZURlcHRoKG1heGlt
dW1ET01UcmVlRGVwdGgpCi0gICAgLCBtX2luUXVpcmtzTW9kZShkb2N1bWVudC0+aW5RdWlya3NN
b2RlKCkpCisgICAgLCBtX2luUXVpcmtzTW9kZShkb2N1bWVudC5pblF1aXJrc01vZGUoKSkKIHsK
ICAgICBBU1NFUlQobV9kb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSB8fCBtX2RvY3VtZW50LT5p
c1hIVE1MRG9jdW1lbnQoKSk7CiB9CiAKLUhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpIVE1MQ29uc3Ry
dWN0aW9uU2l0ZShEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwgUGFyc2VyQ29udGVudFBvbGlj
eSBwYXJzZXJDb250ZW50UG9saWN5LCB1bnNpZ25lZCBtYXhpbXVtRE9NVHJlZURlcHRoKQotICAg
IDogbV9kb2N1bWVudCgmZnJhZ21lbnQtPmRvY3VtZW50KCkpCi0gICAgLCBtX2F0dGFjaG1lbnRS
b290KGZyYWdtZW50KQorSFRNTENvbnN0cnVjdGlvblNpdGU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRl
KERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBQYXJzZXJDb250ZW50UG9saWN5IHBhcnNlckNv
bnRlbnRQb2xpY3ksIHVuc2lnbmVkIG1heGltdW1ET01UcmVlRGVwdGgpCisgICAgOiBtX2RvY3Vt
ZW50KCZmcmFnbWVudC5kb2N1bWVudCgpKQorICAgICwgbV9hdHRhY2htZW50Um9vdCgmZnJhZ21l
bnQpCiAgICAgLCBtX3BhcnNlckNvbnRlbnRQb2xpY3kocGFyc2VyQ29udGVudFBvbGljeSkKICAg
ICAsIG1faXNQYXJzaW5nRnJhZ21lbnQodHJ1ZSkKICAgICAsIG1fcmVkaXJlY3RBdHRhY2hUb0Zv
c3RlclBhcmVudChmYWxzZSkKICAgICAsIG1fbWF4aW11bURPTVRyZWVEZXB0aChtYXhpbXVtRE9N
VHJlZURlcHRoKQotICAgICwgbV9pblF1aXJrc01vZGUoZnJhZ21lbnQtPmRvY3VtZW50KCkuaW5R
dWlya3NNb2RlKCkpCisgICAgLCBtX2luUXVpcmtzTW9kZShmcmFnbWVudC5kb2N1bWVudCgpLmlu
UXVpcmtzTW9kZSgpKQogewogICAgIEFTU0VSVChtX2RvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgp
IHx8IG1fZG9jdW1lbnQtPmlzWEhUTUxEb2N1bWVudCgpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuaAkocmV2aXNpb24g
MTU2OTc3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNp
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsOCArNzEsOCBAQCBjbGFzcyBIVE1MRm9ybUVsZW1l
bnQ7CiBjbGFzcyBIVE1MQ29uc3RydWN0aW9uU2l0ZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoSFRNTENvbnN0cnVjdGlvblNpdGUpOwogcHVibGljOgotICAgIEhUTUxDb25zdHJ1Y3Rpb25T
aXRlKERvY3VtZW50KiwgUGFyc2VyQ29udGVudFBvbGljeSwgdW5zaWduZWQgbWF4aW11bURPTVRy
ZWVEZXB0aCk7Ci0gICAgSFRNTENvbnN0cnVjdGlvblNpdGUoRG9jdW1lbnRGcmFnbWVudCosIFBh
cnNlckNvbnRlbnRQb2xpY3ksIHVuc2lnbmVkIG1heGltdW1ET01UcmVlRGVwdGgpOworICAgIEhU
TUxDb25zdHJ1Y3Rpb25TaXRlKERvY3VtZW50JiwgUGFyc2VyQ29udGVudFBvbGljeSwgdW5zaWdu
ZWQgbWF4aW11bURPTVRyZWVEZXB0aCk7CisgICAgSFRNTENvbnN0cnVjdGlvblNpdGUoRG9jdW1l
bnRGcmFnbWVudCYsIFBhcnNlckNvbnRlbnRQb2xpY3ksIHVuc2lnbmVkIG1heGltdW1ET01UcmVl
RGVwdGgpOwogICAgIH5IVE1MQ29uc3RydWN0aW9uU2l0ZSgpOwogCiAgICAgdm9pZCBkZXRhY2go
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50
UGFyc2VyLmNwcAkocmV2aXNpb24gMTU2OTc3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsMTQgKzc4LDE0
IEBAIHN0YXRpYyBIVE1MVG9rZW5pemVyOjpTdGF0ZSB0b2tlbml6ZXJTdGEKICAgICByZXR1cm4g
SFRNTFRva2VuaXplcjo6RGF0YVN0YXRlOwogfQogCi1IVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxE
b2N1bWVudFBhcnNlcihIVE1MRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHJlcG9ydEVycm9ycykK
K0hUTUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKEhUTUxEb2N1bWVudCYgZG9j
dW1lbnQsIGJvb2wgcmVwb3J0RXJyb3JzKQogICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2Vy
KGRvY3VtZW50KQogICAgICwgbV9vcHRpb25zKGRvY3VtZW50KQogICAgICwgbV90b2tlbihtX29w
dGlvbnMudXNlVGhyZWFkaW5nID8gbnVsbHB0ciA6IGFkb3B0UHRyKG5ldyBIVE1MVG9rZW4pKQog
ICAgICwgbV90b2tlbml6ZXIobV9vcHRpb25zLnVzZVRocmVhZGluZyA/IG51bGxwdHIgOiBIVE1M
VG9rZW5pemVyOjpjcmVhdGUobV9vcHRpb25zKSkKLSAgICAsIG1fc2NyaXB0UnVubmVyKEhUTUxT
Y3JpcHRSdW5uZXI6OmNyZWF0ZShkb2N1bWVudCwgdGhpcykpCi0gICAgLCBtX3RyZWVCdWlsZGVy
KEhUTUxUcmVlQnVpbGRlcjo6Y3JlYXRlKHRoaXMsIGRvY3VtZW50LCBwYXJzZXJDb250ZW50UG9s
aWN5KCksIHJlcG9ydEVycm9ycywgbV9vcHRpb25zKSkKLSAgICAsIG1fcGFyc2VyU2NoZWR1bGVy
KEhUTUxQYXJzZXJTY2hlZHVsZXI6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fc2NyaXB0UnVubmVy
KEhUTUxTY3JpcHRSdW5uZXI6OmNyZWF0ZShkb2N1bWVudCwgKnRoaXMpKQorICAgICwgbV90cmVl
QnVpbGRlcihIVE1MVHJlZUJ1aWxkZXI6OmNyZWF0ZSgqdGhpcywgZG9jdW1lbnQsIHBhcnNlckNv
bnRlbnRQb2xpY3koKSwgcmVwb3J0RXJyb3JzLCBtX29wdGlvbnMpKQorICAgICwgbV9wYXJzZXJT
Y2hlZHVsZXIoSFRNTFBhcnNlclNjaGVkdWxlcjo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1feHNz
QXVkaXRvckRlbGVnYXRlKGRvY3VtZW50KQogI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNF
UikKICAgICAsIG1fd2Vha0ZhY3RvcnkodGhpcykKQEAgLTEwMSwxMyArMTAxLDEzIEBAIEhUTUxE
b2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKEgKIAogLy8gRklYTUU6IE1lbWJlciB2
YXJpYWJsZXMgc2hvdWxkIGJlIGdyb3VwZWQgaW50byBzZWxmLWluaXRpYWxpemluZyBzdHJ1Y3Rz
IHRvCiAvLyBtaW5pbWl6ZSBjb2RlIGR1cGxpY2F0aW9uIGJldHdlZW4gdGhlc2UgY29uc3RydWN0
b3JzLgotSFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFn
bWVudCogZnJhZ21lbnQsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBQYXJzZXJDb250ZW50UG9s
aWN5IHBhcnNlckNvbnRlbnRQb2xpY3kpCi0gICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIo
JmZyYWdtZW50LT5kb2N1bWVudCgpLCBwYXJzZXJDb250ZW50UG9saWN5KQotICAgICwgbV9vcHRp
b25zKCZmcmFnbWVudC0+ZG9jdW1lbnQoKSkKK0hUTUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3Vt
ZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBFbGVtZW50KiBjb250ZXh0RWxl
bWVudCwgUGFyc2VyQ29udGVudFBvbGljeSBwYXJzZXJDb250ZW50UG9saWN5KQorICAgIDogU2Ny
aXB0YWJsZURvY3VtZW50UGFyc2VyKGZyYWdtZW50LmRvY3VtZW50KCksIHBhcnNlckNvbnRlbnRQ
b2xpY3kpCisgICAgLCBtX29wdGlvbnMoZnJhZ21lbnQuZG9jdW1lbnQoKSkKICAgICAsIG1fdG9r
ZW4oYWRvcHRQdHIobmV3IEhUTUxUb2tlbikpCiAgICAgLCBtX3Rva2VuaXplcihIVE1MVG9rZW5p
emVyOjpjcmVhdGUobV9vcHRpb25zKSkKLSAgICAsIG1fdHJlZUJ1aWxkZXIoSFRNTFRyZWVCdWls
ZGVyOjpjcmVhdGUodGhpcywgZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCB0aGlzLT5wYXJzZXJD
b250ZW50UG9saWN5KCksIG1fb3B0aW9ucykpCi0gICAgLCBtX3hzc0F1ZGl0b3JEZWxlZ2F0ZSgm
ZnJhZ21lbnQtPmRvY3VtZW50KCkpCisgICAgLCBtX3RyZWVCdWlsZGVyKEhUTUxUcmVlQnVpbGRl
cjo6Y3JlYXRlKCp0aGlzLCBmcmFnbWVudCwgY29udGV4dEVsZW1lbnQsIHRoaXMtPnBhcnNlckNv
bnRlbnRQb2xpY3koKSwgbV9vcHRpb25zKSkKKyAgICAsIG1feHNzQXVkaXRvckRlbGVnYXRlKGZy
YWdtZW50LmRvY3VtZW50KCkpCiAjaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQogICAg
ICwgbV93ZWFrRmFjdG9yeSh0aGlzKQogI2VuZGlmCkBAIC05NTcsNyArOTU3LDcgQEAgdm9pZCBI
VE1MRG9jdW1lbnRQYXJzZXI6OmV4ZWN1dGVTY3JpcHRzVwogICAgICAgICByZXN1bWVQYXJzaW5n
QWZ0ZXJTY3JpcHRFeGVjdXRpb24oKTsKIH0KIAotdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnBh
cnNlRG9jdW1lbnRGcmFnbWVudChjb25zdCBTdHJpbmcmIHNvdXJjZSwgRG9jdW1lbnRGcmFnbWVu
dCogZnJhZ21lbnQsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBQYXJzZXJDb250ZW50UG9saWN5
IHBhcnNlckNvbnRlbnRQb2xpY3kpCit2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1
bWVudEZyYWdtZW50KGNvbnN0IFN0cmluZyYgc291cmNlLCBEb2N1bWVudEZyYWdtZW50JiBmcmFn
bWVudCwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIFBhcnNlckNvbnRlbnRQb2xpY3kgcGFyc2Vy
Q29udGVudFBvbGljeSkKIHsKICAgICBSZWZQdHI8SFRNTERvY3VtZW50UGFyc2VyPiBwYXJzZXIg
PSBIVE1MRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZShmcmFnbWVudCwgY29udGV4dEVsZW1lbnQsIHBh
cnNlckNvbnRlbnRQb2xpY3kpOwogICAgIHBhcnNlci0+aW5zZXJ0KHNvdXJjZSk7IC8vIFVzZSBp
bnNlcnQoKSBzbyB0aGF0IHRoZSBwYXJzZXIgd2lsbCBub3QgeWllbGQuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaAkocmV2aXNpb24g
MTU2OTc3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgY2xhc3MgUHVtcFNlc3Npb247CiBj
bGFzcyBIVE1MRG9jdW1lbnRQYXJzZXIgOiAgcHVibGljIFNjcmlwdGFibGVEb2N1bWVudFBhcnNl
ciwgSFRNTFNjcmlwdFJ1bm5lckhvc3QsIENhY2hlZFJlc291cmNlQ2xpZW50IHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1M
RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZShIVE1MRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHJlcG9y
dEVycm9ycykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MRG9jdW1lbnRQYXJzZXI+IGNyZWF0
ZShIVE1MRG9jdW1lbnQmIGRvY3VtZW50LCBib29sIHJlcG9ydEVycm9ycykKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTERvY3VtZW50UGFyc2VyKGRvY3VtZW50LCByZXBv
cnRFcnJvcnMpKTsKICAgICB9CkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICAvLyBFeHBv
c2VkIGZvciBIVE1MUGFyc2VyU2NoZWR1bGVyCiAgICAgdm9pZCByZXN1bWVQYXJzaW5nQWZ0ZXJZ
aWVsZCgpOwogCi0gICAgc3RhdGljIHZvaWQgcGFyc2VEb2N1bWVudEZyYWdtZW50KGNvbnN0IFN0
cmluZyYsIERvY3VtZW50RnJhZ21lbnQqLCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgUGFyc2Vy
Q29udGVudFBvbGljeSA9IEFsbG93U2NyaXB0aW5nQ29udGVudCk7CisgICAgc3RhdGljIHZvaWQg
cGFyc2VEb2N1bWVudEZyYWdtZW50KGNvbnN0IFN0cmluZyYsIERvY3VtZW50RnJhZ21lbnQmLCBF
bGVtZW50KiBjb250ZXh0RWxlbWVudCwgUGFyc2VyQ29udGVudFBvbGljeSA9IEFsbG93U2NyaXB0
aW5nQ29udGVudCk7CiAKICAgICBIVE1MVG9rZW5pemVyKiB0b2tlbml6ZXIoKSBjb25zdCB7IHJl
dHVybiBtX3Rva2VuaXplci5nZXQoKTsgfQogCkBAIC0xMDMsMTUgKzEwMywxNSBAQCBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+KSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoKCkgT1ZFUlJJREU7CiAKLSAgICBIVE1MRG9j
dW1lbnRQYXJzZXIoSFRNTERvY3VtZW50KiwgYm9vbCByZXBvcnRFcnJvcnMpOwotICAgIEhUTUxE
b2N1bWVudFBhcnNlcihEb2N1bWVudEZyYWdtZW50KiwgRWxlbWVudCogY29udGV4dEVsZW1lbnQs
IFBhcnNlckNvbnRlbnRQb2xpY3kpOworICAgIEhUTUxEb2N1bWVudFBhcnNlcihIVE1MRG9jdW1l
bnQmLCBib29sIHJlcG9ydEVycm9ycyk7CisgICAgSFRNTERvY3VtZW50UGFyc2VyKERvY3VtZW50
RnJhZ21lbnQmLCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgUGFyc2VyQ29udGVudFBvbGljeSk7
CiAKICAgICBIVE1MVHJlZUJ1aWxkZXIqIHRyZWVCdWlsZGVyKCkgY29uc3QgeyByZXR1cm4gbV90
cmVlQnVpbGRlci5nZXQoKTsgfQogCiAgICAgdm9pZCBmb3JjZVBsYWludGV4dEZvclRleHREb2N1
bWVudCgpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxEb2N1bWVudFBh
cnNlcj4gY3JlYXRlKERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBFbGVtZW50KiBjb250ZXh0
RWxlbWVudCwgUGFyc2VyQ29udGVudFBvbGljeSBwYXJzZXJDb250ZW50UG9saWN5KQorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEhUTUxEb2N1bWVudFBhcnNlcj4gY3JlYXRlKERvY3VtZW50RnJhZ21l
bnQmIGZyYWdtZW50LCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgUGFyc2VyQ29udGVudFBvbGlj
eSBwYXJzZXJDb250ZW50UG9saWN5KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBIVE1MRG9jdW1lbnRQYXJzZXIoZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBwYXJzZXJDb250
ZW50UG9saWN5KSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TE1ldGFDaGFyc2V0UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwCShyZXZpc2lvbiAxNTY5NzcpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAKIEhUTUxNZXRhQ2hhcnNldFBhcnNlcjo6SFRNTE1ldGFDaGFy
c2V0UGFyc2VyKCkKLSAgICA6IG1fdG9rZW5pemVyKEhUTUxUb2tlbml6ZXI6OmNyZWF0ZShIVE1M
UGFyc2VyT3B0aW9ucygwKSkpCisgICAgOiBtX3Rva2VuaXplcihIVE1MVG9rZW5pemVyOjpjcmVh
dGUoSFRNTFBhcnNlck9wdGlvbnMoKSkpCiAgICAgLCBtX2Fzc3VtZWRDb2RlYyhuZXdUZXh0Q29k
ZWMoTGF0aW4xRW5jb2RpbmcoKSkpCiAgICAgLCBtX2luSGVhZFNlY3Rpb24odHJ1ZSkKICAgICAs
IG1fZG9uZUNoZWNraW5nKGZhbHNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFBhcnNlck9wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQYXJzZXJPcHRpb25zLmNwcAkocmV2aXNpb24gMTU2OTc3KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlck9wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSwxMyArMzUsMjIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1IVE1MUGFyc2Vy
T3B0aW9uczo6SFRNTFBhcnNlck9wdGlvbnMoRG9jdW1lbnQqIGRvY3VtZW50KQorSFRNTFBhcnNl
ck9wdGlvbnM6OkhUTUxQYXJzZXJPcHRpb25zKCkKKyAgICA6IHNjcmlwdEVuYWJsZWQoZmFsc2Up
CisgICAgLCBwbHVnaW5zRW5hYmxlZChmYWxzZSkKKyAgICAsIHVzZVByZUhUTUw1UGFyc2VyUXVp
cmtzKGZhbHNlKQorICAgICwgdXNlVGhyZWFkaW5nKGZhbHNlKQorICAgICwgbWF4aW11bURPTVRy
ZWVEZXB0aChTZXR0aW5nczo6ZGVmYXVsdE1heGltdW1IVE1MUGFyc2VyRE9NVHJlZURlcHRoKQog
ewotICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPmZyYW1lKCkgOiAwOwor
fQorCitIVE1MUGFyc2VyT3B0aW9uczo6SFRNTFBhcnNlck9wdGlvbnMoRG9jdW1lbnQmIGRvY3Vt
ZW50KQoreworICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7CiAgICAgc2NyaXB0
RW5hYmxlZCA9IGZyYW1lICYmIGZyYW1lLT5zY3JpcHQoKS5jYW5FeGVjdXRlU2NyaXB0cyhOb3RB
Ym91dFRvRXhlY3V0ZVNjcmlwdCk7CiAgICAgcGx1Z2luc0VuYWJsZWQgPSBmcmFtZSAmJiBmcmFt
ZS0+bG9hZGVyKCkuc3ViZnJhbWVMb2FkZXIoKS5hbGxvd1BsdWdpbnMoTm90QWJvdXRUb0luc3Rh
bnRpYXRlUGx1Z2luKTsKIAotICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50ID8gZG9j
dW1lbnQtPnNldHRpbmdzKCkgOiAwOworICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50
LnNldHRpbmdzKCk7CiAgICAgdXNlUHJlSFRNTDVQYXJzZXJRdWlya3MgPSBzZXR0aW5ncyAmJiBz
ZXR0aW5ncy0+dXNlUHJlSFRNTDVQYXJzZXJRdWlya3MoKTsKICNpZiBFTkFCTEUoVEhSRUFERURf
SFRNTF9QQVJTRVIpCiAgICAgLy8gV2UgZm9yY2UgdGhlIG1haW4tdGhyZWFkIHBhcnNlciBmb3Ig
YWJvdXQ6YmxhbmssIGphdmFzY3JpcHQ6IGFuZCBkYXRhOiB1cmxzIGZvciBjb21wYXRpYmlsaXR5
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyT3B0aW9ucy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJPcHRpb25z
LmgJKHJldmlzaW9uIDE1Njk3NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQ
YXJzZXJPcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwxNCBAQCBjbGFzcyBE
b2N1bWVudDsKIAogY2xhc3MgSFRNTFBhcnNlck9wdGlvbnMgewogcHVibGljOgorICAgIGV4cGxp
Y2l0IEhUTUxQYXJzZXJPcHRpb25zKCk7CisgICAgZXhwbGljaXQgSFRNTFBhcnNlck9wdGlvbnMo
RG9jdW1lbnQmKTsKKwogICAgIGJvb2wgc2NyaXB0RW5hYmxlZDsKICAgICBib29sIHBsdWdpbnNF
bmFibGVkOwogICAgIGJvb2wgdXNlUHJlSFRNTDVQYXJzZXJRdWlya3M7CiAgICAgYm9vbCB1c2VU
aHJlYWRpbmc7CiAgICAgdW5zaWduZWQgbWF4aW11bURPTVRyZWVEZXB0aDsKLQotICAgIGV4cGxp
Y2l0IEhUTUxQYXJzZXJPcHRpb25zKERvY3VtZW50KiA9IDApOwogfTsKIAogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAJ
KHJldmlzaW9uIDE1Njk3NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJz
ZXJTY2hlZHVsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCwxMCArOTQsMTAgQEAgUHVtcFNl
c3Npb246On5QdW1wU2Vzc2lvbigpCiB7CiB9CiAKLUhUTUxQYXJzZXJTY2hlZHVsZXI6OkhUTUxQ
YXJzZXJTY2hlZHVsZXIoSFRNTERvY3VtZW50UGFyc2VyKiBwYXJzZXIpCitIVE1MUGFyc2VyU2No
ZWR1bGVyOjpIVE1MUGFyc2VyU2NoZWR1bGVyKEhUTUxEb2N1bWVudFBhcnNlciYgcGFyc2VyKQog
ICAgIDogbV9wYXJzZXIocGFyc2VyKQotICAgICwgbV9wYXJzZXJUaW1lTGltaXQocGFyc2VyVGlt
ZUxpbWl0KG1fcGFyc2VyLT5kb2N1bWVudCgpLT5wYWdlKCkpKQotICAgICwgbV9wYXJzZXJDaHVu
a1NpemUocGFyc2VyQ2h1bmtTaXplKG1fcGFyc2VyLT5kb2N1bWVudCgpLT5wYWdlKCkpKQorICAg
ICwgbV9wYXJzZXJUaW1lTGltaXQocGFyc2VyVGltZUxpbWl0KG1fcGFyc2VyLmRvY3VtZW50KCkt
PnBhZ2UoKSkpCisgICAgLCBtX3BhcnNlckNodW5rU2l6ZShwYXJzZXJDaHVua1NpemUobV9wYXJz
ZXIuZG9jdW1lbnQoKS0+cGFnZSgpKSkKICAgICAsIG1fY29udGludWVOZXh0Q2h1bmtUaW1lcih0
aGlzLCAmSFRNTFBhcnNlclNjaGVkdWxlcjo6Y29udGludWVOZXh0Q2h1bmtUaW1lckZpcmVkKQog
ICAgICwgbV9pc1N1c3BlbmRlZFdpdGhBY3RpdmVUaW1lcihmYWxzZSkKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECkBAIC0xMTcsMTggKzExNywxOCBAQCB2b2lkIEhUTUxQYXJzZXJTY2hlZHVsZXI6OmNv
bnRpbnVlTmV4dENoCiAgICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0gJm1fY29udGlu
dWVOZXh0Q2h1bmtUaW1lcik7CiAgICAgLy8gRklYTUU6IFRoZSB0aW1lciBjbGFzcyBzaG91bGQg
aGFuZGxlIHRpbWVyIHByaW9yaXRpZXMgaW5zdGVhZCBvZiB0aGlzIGNvZGUuCiAgICAgLy8gSWYg
YSBsYXlvdXQgaXMgc2NoZWR1bGVkLCB3YWl0IGFnYWluIHRvIGxldCB0aGUgbGF5b3V0IHRpbWVy
IHJ1biBmaXJzdC4KLSAgICBpZiAobV9wYXJzZXItPmRvY3VtZW50KCktPmlzTGF5b3V0VGltZXJB
Y3RpdmUoKSkgeworICAgIGlmIChtX3BhcnNlci5kb2N1bWVudCgpLT5pc0xheW91dFRpbWVyQWN0
aXZlKCkpIHsKICAgICAgICAgbV9jb250aW51ZU5leHRDaHVua1RpbWVyLnN0YXJ0T25lU2hvdCgw
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3BhcnNlci0+cmVzdW1lUGFyc2luZ0Fm
dGVyWWllbGQoKTsKKyAgICBtX3BhcnNlci5yZXN1bWVQYXJzaW5nQWZ0ZXJZaWVsZCgpOwogfQog
CiB2b2lkIEhUTUxQYXJzZXJTY2hlZHVsZXI6OmNoZWNrRm9yWWllbGRCZWZvcmVTY3JpcHQoUHVt
cFNlc3Npb24mIHNlc3Npb24pCiB7CiAgICAgLy8gSWYgd2UndmUgbmV2ZXIgcGFpbnRlZCBiZWZv
cmUgYW5kIGEgbGF5b3V0IGlzIHBlbmRpbmcsIHlpZWxkIHByaW9yIHRvIHJ1bm5pbmcKICAgICAv
LyBzY3JpcHRzIHRvIGdpdmUgdGhlIHBhZ2UgYSBjaGFuY2UgdG8gcGFpbnQgZWFybGllci4KLSAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX3BhcnNlci0+ZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBtX3BhcnNlci5kb2N1bWVudCgpOwogICAgIGJvb2wgbmVlZHNGaXJzdFBh
aW50ID0gZG9jdW1lbnQtPnZpZXcoKSAmJiAhZG9jdW1lbnQtPnZpZXcoKS0+aGFzRXZlclBhaW50
ZWQoKTsKICAgICBpZiAobmVlZHNGaXJzdFBhaW50ICYmIGRvY3VtZW50LT5pc0xheW91dFRpbWVy
QWN0aXZlKCkpCiAgICAgICAgIHNlc3Npb24ubmVlZHNZaWVsZCA9IHRydWU7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5oCShyZXZp
c2lvbiAxNTY5NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyU2No
ZWR1bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogY2xhc3Mg
SFRNTFBhcnNlclNjaGVkdWxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSFRNTFBhcnNl
clNjaGVkdWxlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRp
YyBPd25QdHI8SFRNTFBhcnNlclNjaGVkdWxlcj4gY3JlYXRlKEhUTUxEb2N1bWVudFBhcnNlciog
cGFyc2VyKQorICAgIHN0YXRpYyBPd25QdHI8SFRNTFBhcnNlclNjaGVkdWxlcj4gY3JlYXRlKEhU
TUxEb2N1bWVudFBhcnNlciYgcGFyc2VyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBIVE1MUGFyc2VyU2NoZWR1bGVyKHBhcnNlcikpOwogICAgIH0KQEAgLTkzLDExICs5Mywx
MSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXN1bWUoKTsKIAogcHJpdmF0ZToKLSAgICBIVE1MUGFy
c2VyU2NoZWR1bGVyKEhUTUxEb2N1bWVudFBhcnNlciopOworICAgIEhUTUxQYXJzZXJTY2hlZHVs
ZXIoSFRNTERvY3VtZW50UGFyc2VyJik7CiAKICAgICB2b2lkIGNvbnRpbnVlTmV4dENodW5rVGlt
ZXJGaXJlZChUaW1lcjxIVE1MUGFyc2VyU2NoZWR1bGVyPiopOwogCi0gICAgSFRNTERvY3VtZW50
UGFyc2VyKiBtX3BhcnNlcjsKKyAgICBIVE1MRG9jdW1lbnRQYXJzZXImIG1fcGFyc2VyOwogCiAg
ICAgZG91YmxlIG1fcGFyc2VyVGltZUxpbWl0OwogICAgIGludCBtX3BhcnNlckNodW5rU2l6ZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNl
UHJlbG9hZGVyLmNwcAkocmV2aXNpb24gMTU2OTc3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTIg
KzQ0LDEyIEBAIGJvb2wgUHJlbG9hZFJlcXVlc3Q6OmlzU2FmZVRvU2VuZFRvQW5vdGgKICAgICAg
ICAgJiYgbV9iYXNlVVJMLmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpOwogfQogCi1VUkwg
UHJlbG9hZFJlcXVlc3Q6OmNvbXBsZXRlVVJMKERvY3VtZW50KiBkb2N1bWVudCkKK1VSTCBQcmVs
b2FkUmVxdWVzdDo6Y29tcGxldGVVUkwoRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIHJldHVy
biBkb2N1bWVudC0+Y29tcGxldGVVUkwobV9yZXNvdXJjZVVSTCwgbV9iYXNlVVJMLmlzRW1wdHko
KSA/IGRvY3VtZW50LT51cmwoKSA6IG1fYmFzZVVSTCk7CisgICAgcmV0dXJuIGRvY3VtZW50LmNv
bXBsZXRlVVJMKG1fcmVzb3VyY2VVUkwsIG1fYmFzZVVSTC5pc0VtcHR5KCkgPyBkb2N1bWVudC51
cmwoKSA6IG1fYmFzZVVSTCk7CiB9CiAKLUNhY2hlZFJlc291cmNlUmVxdWVzdCBQcmVsb2FkUmVx
dWVzdDo6cmVzb3VyY2VSZXF1ZXN0KERvY3VtZW50KiBkb2N1bWVudCkKK0NhY2hlZFJlc291cmNl
UmVxdWVzdCBQcmVsb2FkUmVxdWVzdDo6cmVzb3VyY2VSZXF1ZXN0KERvY3VtZW50JiBkb2N1bWVu
dCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIENhY2hlZFJlc291cmNlUmVx
dWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdChjb21wbGV0ZVVSTChkb2N1bWVudCkpKTsKQEAg
LTc5LDE0ICs3OSwxNCBAQCBzdGF0aWMgYm9vbCBtZWRpYUF0dHJpYnV0ZU1hdGNoZXMoRnJhbWUq
CiAKIHZvaWQgSFRNTFJlc291cmNlUHJlbG9hZGVyOjpwcmVsb2FkKE93blB0cjxQcmVsb2FkUmVx
dWVzdD4gcHJlbG9hZCkKIHsKLSAgICBBU1NFUlQobV9kb2N1bWVudC0+ZnJhbWUoKSk7Ci0gICAg
QVNTRVJUKG1fZG9jdW1lbnQtPnJlbmRlclZpZXcoKSk7Ci0gICAgQVNTRVJUKG1fZG9jdW1lbnQt
PnJlbmRlclZpZXcoKS0+c3R5bGUoKSk7Ci0gICAgaWYgKCFwcmVsb2FkLT5tZWRpYSgpLmlzRW1w
dHkoKSAmJiAhbWVkaWFBdHRyaWJ1dGVNYXRjaGVzKG1fZG9jdW1lbnQtPmZyYW1lKCksIG1fZG9j
dW1lbnQtPnJlbmRlclZpZXcoKS0+c3R5bGUoKSwgcHJlbG9hZC0+bWVkaWEoKSkpCisgICAgQVNT
RVJUKG1fZG9jdW1lbnQuZnJhbWUoKSk7CisgICAgQVNTRVJUKG1fZG9jdW1lbnQucmVuZGVyVmll
dygpKTsKKyAgICBBU1NFUlQobV9kb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkpOworICAg
IGlmICghcHJlbG9hZC0+bWVkaWEoKS5pc0VtcHR5KCkgJiYgIW1lZGlhQXR0cmlidXRlTWF0Y2hl
cyhtX2RvY3VtZW50LmZyYW1lKCksIG1fZG9jdW1lbnQucmVuZGVyVmlldygpLT5zdHlsZSgpLCBw
cmVsb2FkLT5tZWRpYSgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QgPSBwcmVsb2FkLT5yZXNvdXJjZVJlcXVlc3QobV9kb2N1bWVudCk7Ci0g
ICAgbV9kb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+cHJlbG9hZChwcmVsb2FkLT5y
ZXNvdXJjZVR5cGUoKSwgcmVxdWVzdCwgcHJlbG9hZC0+Y2hhcnNldCgpKTsKKyAgICBtX2RvY3Vt
ZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnByZWxvYWQocHJlbG9hZC0+cmVzb3VyY2VUeXBl
KCksIHJlcXVlc3QsIHByZWxvYWQtPmNoYXJzZXQoKSk7CiB9CiAKIApJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmgJKHJldmlz
aW9uIDE1Njk3NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVBy
ZWxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3Q7CiAKLSAgICBDYWNoZWRS
ZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0KERvY3VtZW50Kik7CisgICAgQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdChEb2N1bWVudCYpOwogCiAgICAgY29uc3QgU3Ry
aW5nJiBjaGFyc2V0KCkgY29uc3QgeyByZXR1cm4gbV9jaGFyc2V0OyB9CiAgICAgY29uc3QgU3Ry
aW5nJiBtZWRpYSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFBdHRyaWJ1dGU7IH0KQEAgLTY0LDcg
KzY0LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgVVJMIGNvbXBsZXRlVVJMKERv
Y3VtZW50Kik7CisgICAgVVJMIGNvbXBsZXRlVVJMKERvY3VtZW50Jik7CiAKICAgICBTdHJpbmcg
bV9pbml0aWF0b3I7CiAgICAgU3RyaW5nIG1fcmVzb3VyY2VVUkw7CkBAIC04MCw3ICs4MCw3IEBA
IHR5cGVkZWYgVmVjdG9yPE93blB0cjxQcmVsb2FkUmVxdWVzdD4gPiAKIGNsYXNzIEhUTUxSZXNv
dXJjZVByZWxvYWRlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSFRNTFJlc291cmNlUHJl
bG9hZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQg
SFRNTFJlc291cmNlUHJlbG9hZGVyKERvY3VtZW50KiBkb2N1bWVudCkKKyAgICBleHBsaWNpdCBI
VE1MUmVzb3VyY2VQcmVsb2FkZXIoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICAgICA6IG1fZG9j
dW1lbnQoZG9jdW1lbnQpCiAgICAgICAgICwgbV93ZWFrRmFjdG9yeSh0aGlzKQogICAgIHsKQEAg
LTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgIFdlYWtQdHI8SFRNTFJlc291cmNlUHJlbG9hZGVy
PiBjcmVhdGVXZWFrUHRyKCkgeyByZXR1cm4gbV93ZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7
IH0KIAogcHJpdmF0ZToKLSAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKKyAgICBEb2N1bWVudCYg
bV9kb2N1bWVudDsKICAgICBXZWFrUHRyRmFjdG9yeTxIVE1MUmVzb3VyY2VQcmVsb2FkZXI+IG1f
d2Vha0ZhY3Rvcnk7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
U2NyaXB0UnVubmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MU2NyaXB0UnVubmVyLmNwcAkocmV2aXNpb24gMTU2OTc3KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDEzICs0NywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CiAKLUhUTUxTY3JpcHRSdW5uZXI6OkhUTUxTY3JpcHRSdW5uZXIoRG9jdW1lbnQqIGRv
Y3VtZW50LCBIVE1MU2NyaXB0UnVubmVySG9zdCogaG9zdCkKLSAgICA6IG1fZG9jdW1lbnQoZG9j
dW1lbnQpCitIVE1MU2NyaXB0UnVubmVyOjpIVE1MU2NyaXB0UnVubmVyKERvY3VtZW50JiBkb2N1
bWVudCwgSFRNTFNjcmlwdFJ1bm5lckhvc3QmIGhvc3QpCisgICAgOiBtX2RvY3VtZW50KCZkb2N1
bWVudCkKICAgICAsIG1faG9zdChob3N0KQogICAgICwgbV9zY3JpcHROZXN0aW5nTGV2ZWwoMCkK
ICAgICAsIG1faGFzU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cyhmYWxzZSkKIHsKLSAgICBB
U1NFUlQobV9ob3N0KTsKIH0KIAogSFRNTFNjcmlwdFJ1bm5lcjo6fkhUTUxTY3JpcHRSdW5uZXIo
KQpAQCAtMTE4LDcgKzExNyw3IEBAIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVBhcnNp
bmdCbG8KICAgICBBU1NFUlQobV9kb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkpOwog
ICAgIEFTU0VSVChpc1BlbmRpbmdTY3JpcHRSZWFkeShtX3BhcnNlckJsb2NraW5nU2NyaXB0KSk7
CiAKLSAgICBJbnNlcnRpb25Qb2ludFJlY29yZCBpbnNlcnRpb25Qb2ludFJlY29yZChtX2hvc3Qt
PmlucHV0U3RyZWFtKCkpOworICAgIEluc2VydGlvblBvaW50UmVjb3JkIGluc2VydGlvblBvaW50
UmVjb3JkKG1faG9zdC5pbnB1dFN0cmVhbSgpKTsKICAgICBleGVjdXRlUGVuZGluZ1NjcmlwdEFu
ZERpc3BhdGNoRXZlbnQobV9wYXJzZXJCbG9ja2luZ1NjcmlwdCk7CiB9CiAKQEAgLTE1NywxNCAr
MTU2LDE0IEBAIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVBlbmRpbmdTY3IKIHZvaWQg
SFRNTFNjcmlwdFJ1bm5lcjo6d2F0Y2hGb3JMb2FkKFBlbmRpbmdTY3JpcHQmIHBlbmRpbmdTY3Jp
cHQpCiB7CiAgICAgQVNTRVJUKCFwZW5kaW5nU2NyaXB0LndhdGNoaW5nRm9yTG9hZCgpKTsKLSAg
ICBtX2hvc3QtPndhdGNoRm9yTG9hZChwZW5kaW5nU2NyaXB0LmNhY2hlZFNjcmlwdCgpKTsKKyAg
ICBtX2hvc3Qud2F0Y2hGb3JMb2FkKHBlbmRpbmdTY3JpcHQuY2FjaGVkU2NyaXB0KCkpOwogICAg
IHBlbmRpbmdTY3JpcHQuc2V0V2F0Y2hpbmdGb3JMb2FkKHRydWUpOwogfQogCiB2b2lkIEhUTUxT
Y3JpcHRSdW5uZXI6OnN0b3BXYXRjaGluZ0ZvckxvYWQoUGVuZGluZ1NjcmlwdCYgcGVuZGluZ1Nj
cmlwdCkKIHsKICAgICBBU1NFUlQocGVuZGluZ1NjcmlwdC53YXRjaGluZ0ZvckxvYWQoKSk7Ci0g
ICAgbV9ob3N0LT5zdG9wV2F0Y2hpbmdGb3JMb2FkKHBlbmRpbmdTY3JpcHQuY2FjaGVkU2NyaXB0
KCkpOworICAgIG1faG9zdC5zdG9wV2F0Y2hpbmdGb3JMb2FkKHBlbmRpbmdTY3JpcHQuY2FjaGVk
U2NyaXB0KCkpOwogICAgIHBlbmRpbmdTY3JpcHQuc2V0V2F0Y2hpbmdGb3JMb2FkKGZhbHNlKTsK
IH0KIApAQCAtMTc1LDcgKzE3NCw3IEBAIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZShQ
YXNzUmVmUHQKICAgICBBU1NFUlQoc2NyaXB0RWxlbWVudCk7CiAgICAgLy8gRklYTUU6IElmIHNj
cmlwdGluZyBpcyBkaXNhYmxlZCwgYWx3YXlzIGp1c3QgcmV0dXJuLgogCi0gICAgYm9vbCBoYWRQ
cmVsb2FkU2Nhbm5lciA9IG1faG9zdC0+aGFzUHJlbG9hZFNjYW5uZXIoKTsKKyAgICBib29sIGhh
ZFByZWxvYWRTY2FubmVyID0gbV9ob3N0Lmhhc1ByZWxvYWRTY2FubmVyKCk7CiAKICAgICAvLyBU
cnkgdG8gZXhlY3V0ZSB0aGUgc2NyaXB0IGdpdmVuIHRvIHVzLgogICAgIHJ1blNjcmlwdChzY3Jp
cHRFbGVtZW50LmdldCgpLCBzY3JpcHRTdGFydFBvc2l0aW9uKTsKQEAgLTE4NCw4ICsxODMsOCBA
QCB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGUoUGFzc1JlZlB0CiAgICAgICAgIGlmIChp
c0V4ZWN1dGluZ1NjcmlwdCgpKQogICAgICAgICAgICAgcmV0dXJuOyAvLyBVbndpbmQgdG8gdGhl
IG91dGVybW9zdCBIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlIGJlZm9yZSBjb250aW51aW5nIHBh
cnNpbmcuCiAgICAgICAgIC8vIElmIHByZWxvYWQgc2Nhbm5lciBnb3QgY3JlYXRlZCwgaXQgaXMg
bWlzc2luZyB0aGUgc291cmNlIGFmdGVyIHRoZSBjdXJyZW50IGluc2VydGlvbiBwb2ludC4gQXBw
ZW5kIGl0IGFuZCBzY2FuLgotICAgICAgICBpZiAoIWhhZFByZWxvYWRTY2FubmVyICYmIG1faG9z
dC0+aGFzUHJlbG9hZFNjYW5uZXIoKSkKLSAgICAgICAgICAgIG1faG9zdC0+YXBwZW5kQ3VycmVu
dElucHV0U3RyZWFtVG9QcmVsb2FkU2Nhbm5lckFuZFNjYW4oKTsKKyAgICAgICAgaWYgKCFoYWRQ
cmVsb2FkU2Nhbm5lciAmJiBtX2hvc3QuaGFzUHJlbG9hZFNjYW5uZXIoKSkKKyAgICAgICAgICAg
IG1faG9zdC5hcHBlbmRDdXJyZW50SW5wdXRTdHJlYW1Ub1ByZWxvYWRTY2FubmVyQW5kU2Nhbigp
OwogICAgICAgICBleGVjdXRlUGFyc2luZ0Jsb2NraW5nU2NyaXB0cygpOwogICAgIH0KIH0KQEAg
LTMwNiw3ICszMDUsNyBAQCB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OnJ1blNjcmlwdChFbGVtZW50
CiAgICAgICAgICAgICBNdXRhdGlvbk9ic2VydmVyOjpkZWxpdmVyQWxsTXV0YXRpb25zKCk7CiAg
ICAgICAgIH0KIAotICAgICAgICBJbnNlcnRpb25Qb2ludFJlY29yZCBpbnNlcnRpb25Qb2ludFJl
Y29yZChtX2hvc3QtPmlucHV0U3RyZWFtKCkpOworICAgICAgICBJbnNlcnRpb25Qb2ludFJlY29y
ZCBpbnNlcnRpb25Qb2ludFJlY29yZChtX2hvc3QuaW5wdXRTdHJlYW0oKSk7CiAgICAgICAgIE5l
c3RpbmdMZXZlbEluY3JlbWVudGVyIG5lc3RpbmdMZXZlbEluY3JlbWVudGVyKG1fc2NyaXB0TmVz
dGluZ0xldmVsKTsKIAogICAgICAgICBzY3JpcHRFbGVtZW50LT5wcmVwYXJlU2NyaXB0KHNjcmlw
dFN0YXJ0UG9zaXRpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNj
cmlwdFJ1bm5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxTY3JpcHRSdW5uZXIuaAkocmV2aXNpb24gMTU2OTc3KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3
IEBAIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CiBjbGFzcyBIVE1MU2NyaXB0UnVubmVyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShIVE1MU2NyaXB0UnVubmVyKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIE93blB0cjxIVE1MU2NyaXB0UnVubmVyPiBj
cmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MU2NyaXB0UnVubmVySG9zdCogaG9zdCkKKyAg
ICBzdGF0aWMgT3duUHRyPEhUTUxTY3JpcHRSdW5uZXI+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1l
bnQsIEhUTUxTY3JpcHRSdW5uZXJIb3N0JiBob3N0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBIVE1MU2NyaXB0UnVubmVyKGRvY3VtZW50LCBob3N0KSk7CiAgICAgfQpAQCAt
NjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0V4ZWN1dGluZ1NjcmlwdCgpIGNvbnN0
IHsgcmV0dXJuICEhbV9zY3JpcHROZXN0aW5nTGV2ZWw7IH0KIAogcHJpdmF0ZToKLSAgICBIVE1M
U2NyaXB0UnVubmVyKERvY3VtZW50KiwgSFRNTFNjcmlwdFJ1bm5lckhvc3QqKTsKKyAgICBIVE1M
U2NyaXB0UnVubmVyKERvY3VtZW50JiwgSFRNTFNjcmlwdFJ1bm5lckhvc3QmKTsKIAogICAgIEZy
YW1lKiBmcmFtZSgpIGNvbnN0OwogCkBAIC04NSw3ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgU2Ny
aXB0U291cmNlQ29kZSBzb3VyY2VGcm9tUGVuZGluZ1NjcmlwdChjb25zdCBQZW5kaW5nU2NyaXB0
JiwgYm9vbCYgZXJyb3JPY2N1cnJlZCkgY29uc3Q7CiAKICAgICBEb2N1bWVudCogbV9kb2N1bWVu
dDsKLSAgICBIVE1MU2NyaXB0UnVubmVySG9zdCogbV9ob3N0OworICAgIEhUTUxTY3JpcHRSdW5u
ZXJIb3N0JiBtX2hvc3Q7CiAgICAgUGVuZGluZ1NjcmlwdCBtX3BhcnNlckJsb2NraW5nU2NyaXB0
OwogICAgIERlcXVlPFBlbmRpbmdTY3JpcHQ+IG1fc2NyaXB0c1RvRXhlY3V0ZUFmdGVyUGFyc2lu
ZzsgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8j
bGlzdC1vZi1zY3JpcHRzLXRoYXQtd2lsbC1leGVjdXRlLXdoZW4tdGhlLWRvY3VtZW50LWhhcy1m
aW5pc2hlZC1wYXJzaW5nCiAgICAgdW5zaWduZWQgbV9zY3JpcHROZXN0aW5nTGV2ZWw7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAJKHJl
dmlzaW9uIDE1Njk3NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVp
bGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Miw3ICsyNTIsNyBAQCBwcml2YXRlOgogfTsK
IAogCi1IVE1MVHJlZUJ1aWxkZXI6OkhUTUxUcmVlQnVpbGRlcihIVE1MRG9jdW1lbnRQYXJzZXIq
IHBhcnNlciwgSFRNTERvY3VtZW50KiBkb2N1bWVudCwgUGFyc2VyQ29udGVudFBvbGljeSBwYXJz
ZXJDb250ZW50UG9saWN5LCBib29sLCBjb25zdCBIVE1MUGFyc2VyT3B0aW9ucyYgb3B0aW9ucykK
K0hUTUxUcmVlQnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVyKEhUTUxEb2N1bWVudFBhcnNlciYgcGFy
c2VyLCBIVE1MRG9jdW1lbnQmIGRvY3VtZW50LCBQYXJzZXJDb250ZW50UG9saWN5IHBhcnNlckNv
bnRlbnRQb2xpY3ksIGJvb2wsIGNvbnN0IEhUTUxQYXJzZXJPcHRpb25zJiBvcHRpb25zKQogICAg
IDogbV9mcmFtZXNldE9rKHRydWUpCiAjaWZuZGVmIE5ERUJVRwogICAgICwgbV9pc0F0dGFjaGVk
KHRydWUpCkBAIC0yNjksNyArMjY5LDcgQEAgSFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJlZUJ1aWxk
ZXIoSFRNTERvYwogCiAvLyBGSVhNRTogTWVtYmVyIHZhcmlhYmxlcyBzaG91bGQgYmUgZ3JvdXBl
ZCBpbnRvIHNlbGYtaW5pdGlhbGl6aW5nIHN0cnVjdHMgdG8KIC8vIG1pbmltaXplIGNvZGUgZHVw
bGljYXRpb24gYmV0d2VlbiB0aGVzZSBjb25zdHJ1Y3RvcnMuCi1IVE1MVHJlZUJ1aWxkZXI6OkhU
TUxUcmVlQnVpbGRlcihIVE1MRG9jdW1lbnRQYXJzZXIqIHBhcnNlciwgRG9jdW1lbnRGcmFnbWVu
dCogZnJhZ21lbnQsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBQYXJzZXJDb250ZW50UG9saWN5
IHBhcnNlckNvbnRlbnRQb2xpY3ksIGNvbnN0IEhUTUxQYXJzZXJPcHRpb25zJiBvcHRpb25zKQor
SFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJlZUJ1aWxkZXIoSFRNTERvY3VtZW50UGFyc2VyJiBwYXJz
ZXIsIERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwg
UGFyc2VyQ29udGVudFBvbGljeSBwYXJzZXJDb250ZW50UG9saWN5LCBjb25zdCBIVE1MUGFyc2Vy
T3B0aW9ucyYgb3B0aW9ucykKICAgICA6IG1fZnJhbWVzZXRPayh0cnVlKQogI2lmbmRlZiBOREVC
VUcKICAgICAsIG1faXNBdHRhY2hlZCh0cnVlKQpAQCAtMjkxLDcgKzI5MSw3IEBAIEhUTUxUcmVl
QnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVyKEhUTUxEb2MKICAgICAgICAgLy8gaHR0cDovL3d3dy53
aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWVuZC5o
dG1sI2ZyYWdtZW50LWNhc2UKICAgICAgICAgLy8gRm9yIGVmZmljaWVuY3ksIHdlIHNraXAgc3Rl
cCA0LjIgKCJMZXQgcm9vdCBiZSBhIG5ldyBodG1sIGVsZW1lbnQgd2l0aCBubyBhdHRyaWJ1dGVz
IikKICAgICAgICAgLy8gYW5kIGluc3RlYWQgdXNlIHRoZSBEb2N1bWVudEZyYWdtZW50IGFzIGEg
cm9vdCBub2RlLgotICAgICAgICBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnB1c2hSb290Tm9kZShI
VE1MU3RhY2tJdGVtOjpjcmVhdGUoZnJhZ21lbnQsIEhUTUxTdGFja0l0ZW06Okl0ZW1Gb3JEb2N1
bWVudEZyYWdtZW50Tm9kZSkpOworICAgICAgICBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnB1c2hS
b290Tm9kZShIVE1MU3RhY2tJdGVtOjpjcmVhdGUoJmZyYWdtZW50LCBIVE1MU3RhY2tJdGVtOjpJ
dGVtRm9yRG9jdW1lbnRGcmFnbWVudE5vZGUpKTsKIAogI2lmIEVOQUJMRShURU1QTEFURV9FTEVN
RU5UKQogICAgICAgICBpZiAoY29udGV4dEVsZW1lbnQtPmhhc1RhZ05hbWUodGVtcGxhdGVUYWcp
KQpAQCAtMzI1LDExICszMjUsMTEgQEAgSFRNTFRyZWVCdWlsZGVyOjpGcmFnbWVudFBhcnNpbmdD
b250ZXh0OgogewogfQogCi1IVE1MVHJlZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQ6
OkZyYWdtZW50UGFyc2luZ0NvbnRleHQoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEVsZW1l
bnQqIGNvbnRleHRFbGVtZW50KQotICAgIDogbV9mcmFnbWVudChmcmFnbWVudCkKK0hUTUxUcmVl
QnVpbGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dDo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dChE
b2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCwgRWxlbWVudCogY29udGV4dEVsZW1lbnQpCisgICAg
OiBtX2ZyYWdtZW50KCZmcmFnbWVudCkKICAgICAsIG1fY29udGV4dEVsZW1lbnQoY29udGV4dEVs
ZW1lbnQpCiB7Ci0gICAgQVNTRVJUKCFmcmFnbWVudC0+aGFzQ2hpbGROb2RlcygpKTsKKyAgICBB
U1NFUlQoIWZyYWdtZW50Lmhhc0NoaWxkTm9kZXMoKSk7CiB9CiAKIEhUTUxUcmVlQnVpbGRlcjo6
RnJhZ21lbnRQYXJzaW5nQ29udGV4dDo6fkZyYWdtZW50UGFyc2luZ0NvbnRleHQoKQpAQCAtMzU1
LDE0ICszNTUsMTQgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWUoQXRvbQog
ICAgIGVsc2UKICAgICAgICAgcHJvY2Vzc1Rva2VuKHRva2VuKTsKIAotICAgIGlmIChtX3BhcnNl
ci0+dG9rZW5pemVyKCkpIHsKKyAgICBpZiAobV9wYXJzZXIudG9rZW5pemVyKCkpIHsKICAgICAg
ICAgYm9vbCBpbkZvcmVpZ25Db250ZW50ID0gIW1fdHJlZS5pc0VtcHR5KCkKICAgICAgICAgICAg
ICYmICFtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5pc0luSFRNTE5hbWVzcGFjZSgpCiAgICAg
ICAgICAgICAmJiAhSFRNTEVsZW1lbnRTdGFjazo6aXNIVE1MSW50ZWdyYXRpb25Qb2ludChtX3Ry
ZWUuY3VycmVudFN0YWNrSXRlbSgpKQogICAgICAgICAgICAgJiYgIUhUTUxFbGVtZW50U3RhY2s6
OmlzTWF0aE1MVGV4dEludGVncmF0aW9uUG9pbnQobV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKSk7
CiAKLSAgICAgICAgbV9wYXJzZXItPnRva2VuaXplcigpLT5zZXRGb3JjZU51bGxDaGFyYWN0ZXJS
ZXBsYWNlbWVudChtX2luc2VydGlvbk1vZGUgPT0gVGV4dE1vZGUgfHwgaW5Gb3JlaWduQ29udGVu
dCk7Ci0gICAgICAgIG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+c2V0U2hvdWxkQWxsb3dDREFUQShp
bkZvcmVpZ25Db250ZW50KTsKKyAgICAgICAgbV9wYXJzZXIudG9rZW5pemVyKCktPnNldEZvcmNl
TnVsbENoYXJhY3RlclJlcGxhY2VtZW50KG1faW5zZXJ0aW9uTW9kZSA9PSBUZXh0TW9kZSB8fCBp
bkZvcmVpZ25Db250ZW50KTsKKyAgICAgICAgbV9wYXJzZXIudG9rZW5pemVyKCktPnNldFNob3Vs
ZEFsbG93Q0RBVEEoaW5Gb3JlaWduQ29udGVudCk7CiAgICAgfQogCiAgICAgbV90cmVlLmV4ZWN1
dGVRdWV1ZWRUYXNrcygpOwpAQCAtNzI2LDggKzcyNiw4IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVy
Ojpwcm9jZXNzU3RhcnRUYWdGb3IKICAgICBpZiAodG9rZW4tPm5hbWUoKSA9PSBwbGFpbnRleHRU
YWcpIHsKICAgICAgICAgcHJvY2Vzc0Zha2VQRW5kVGFnSWZQSW5CdXR0b25TY29wZSgpOwogICAg
ICAgICBtX3RyZWUuaW5zZXJ0SFRNTEVsZW1lbnQodG9rZW4pOwotICAgICAgICBpZiAobV9wYXJz
ZXItPnRva2VuaXplcigpKQotICAgICAgICAgICAgbV9wYXJzZXItPnRva2VuaXplcigpLT5zZXRT
dGF0ZShIVE1MVG9rZW5pemVyOjpQTEFJTlRFWFRTdGF0ZSk7CisgICAgICAgIGlmIChtX3BhcnNl
ci50b2tlbml6ZXIoKSkKKyAgICAgICAgICAgIG1fcGFyc2VyLnRva2VuaXplcigpLT5zZXRTdGF0
ZShIVE1MVG9rZW5pemVyOjpQTEFJTlRFWFRTdGF0ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgaWYgKHRva2VuLT5uYW1lKCkgPT0gYnV0dG9uVGFnKSB7CkBAIC04MzcsOCArODM3LDgg
QEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvcgogICAgIGlmICh0b2tl
bi0+bmFtZSgpID09IHRleHRhcmVhVGFnKSB7CiAgICAgICAgIG1fdHJlZS5pbnNlcnRIVE1MRWxl
bWVudCh0b2tlbik7CiAgICAgICAgIG1fc2hvdWxkU2tpcExlYWRpbmdOZXdsaW5lID0gdHJ1ZTsK
LSAgICAgICAgaWYgKG1fcGFyc2VyLT50b2tlbml6ZXIoKSkKLSAgICAgICAgICAgIG1fcGFyc2Vy
LT50b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6UkNEQVRBU3RhdGUpOworICAg
ICAgICBpZiAobV9wYXJzZXIudG9rZW5pemVyKCkpCisgICAgICAgICAgICBtX3BhcnNlci50b2tl
bml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6UkNEQVRBU3RhdGUpOwogICAgICAgICBt
X29yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IG1faW5zZXJ0aW9uTW9kZTsKICAgICAgICAgbV9mcmFt
ZXNldE9rID0gZmFsc2U7CiAgICAgICAgIHNldEluc2VydGlvbk1vZGUoVGV4dE1vZGUpOwpAQCAt
MjE2OCwxMyArMjE2OCwxMyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhB
dG9tCiAgICAgICAgICAgICBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnBvcCgpOwogICAgICAgICAg
ICAgc2V0SW5zZXJ0aW9uTW9kZShtX29yaWdpbmFsSW5zZXJ0aW9uTW9kZSk7CiAKLSAgICAgICAg
ICAgIGlmIChtX3BhcnNlci0+dG9rZW5pemVyKCkpIHsKKyAgICAgICAgICAgIGlmIChtX3BhcnNl
ci50b2tlbml6ZXIoKSkgewogICAgICAgICAgICAgICAgIC8vIFRoaXMgdG9rZW4gd2lsbCBub3Qg
aGF2ZSBiZWVuIGNyZWF0ZWQgYnkgdGhlIHRva2VuaXplciBpZiBhCiAgICAgICAgICAgICAgICAg
Ly8gc2VsZi1jbG9zaW5nIHNjcmlwdCB0YWcgd2FzIGVuY291bnRlcmVkIGFuZCBwcmUtSFRNTDUg
cGFyc2VyCiAgICAgICAgICAgICAgICAgLy8gcXVpcmtzIGFyZSBlbmFibGVkLiBXZSBtdXN0IHNl
dCB0aGUgdG9rZW5pemVyJ3Mgc3RhdGUgdG8KICAgICAgICAgICAgICAgICAvLyBEYXRhU3RhdGUg
ZXhwbGljaXRseSBpZiB0aGUgdG9rZW5pemVyIGRpZG4ndCBoYXZlIGEgY2hhbmNlIHRvLgotICAg
ICAgICAgICAgICAgIEFTU0VSVChtX3BhcnNlci0+dG9rZW5pemVyKCktPnN0YXRlKCkgPT0gSFRN
TFRva2VuaXplcjo6RGF0YVN0YXRlIHx8IG1fb3B0aW9ucy51c2VQcmVIVE1MNVBhcnNlclF1aXJr
cyB8fCBtX29wdGlvbnMudXNlVGhyZWFkaW5nKTsKLSAgICAgICAgICAgICAgICBtX3BhcnNlci0+
dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZSk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKG1fcGFyc2VyLnRva2VuaXplcigpLT5zdGF0ZSgpID09IEhUTUxUb2tl
bml6ZXI6OkRhdGFTdGF0ZSB8fCBtX29wdGlvbnMudXNlUHJlSFRNTDVQYXJzZXJRdWlya3MgfHwg
bV9vcHRpb25zLnVzZVRocmVhZGluZyk7CisgICAgICAgICAgICAgICAgbV9wYXJzZXIudG9rZW5p
emVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI3MjAsOCArMjcyMCw4IEBAIHZv
aWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1JDREEKIHsKICAgICBBU1NFUlQodG9r
ZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKICAgICBtX3RyZWUuaW5zZXJ0SFRN
TEVsZW1lbnQodG9rZW4pOwotICAgIGlmIChtX3BhcnNlci0+dG9rZW5pemVyKCkpCi0gICAgICAg
IG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6UkNEQVRBU3Rh
dGUpOworICAgIGlmIChtX3BhcnNlci50b2tlbml6ZXIoKSkKKyAgICAgICAgbV9wYXJzZXIudG9r
ZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlJDREFUQVN0YXRlKTsKICAgICBtX29y
aWdpbmFsSW5zZXJ0aW9uTW9kZSA9IG1faW5zZXJ0aW9uTW9kZTsKICAgICBzZXRJbnNlcnRpb25N
b2RlKFRleHRNb2RlKTsKIH0KQEAgLTI3MzAsOCArMjczMCw4IEBAIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzR2VuZXJpY1Jhd1QKIHsKICAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBI
VE1MVG9rZW46OlN0YXJ0VGFnKTsKICAgICBtX3RyZWUuaW5zZXJ0SFRNTEVsZW1lbnQodG9rZW4p
OwotICAgIGlmIChtX3BhcnNlci0+dG9rZW5pemVyKCkpCi0gICAgICAgIG1fcGFyc2VyLT50b2tl
bml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6UkFXVEVYVFN0YXRlKTsKKyAgICBpZiAo
bV9wYXJzZXIudG9rZW5pemVyKCkpCisgICAgICAgIG1fcGFyc2VyLnRva2VuaXplcigpLT5zZXRT
dGF0ZShIVE1MVG9rZW5pemVyOjpSQVdURVhUU3RhdGUpOwogICAgIG1fb3JpZ2luYWxJbnNlcnRp
b25Nb2RlID0gbV9pbnNlcnRpb25Nb2RlOwogICAgIHNldEluc2VydGlvbk1vZGUoVGV4dE1vZGUp
OwogfQpAQCAtMjc0MCwxMSArMjc0MCwxMSBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c1NjcmlwdFN0YXJ0CiB7CiAgICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpT
dGFydFRhZyk7CiAgICAgbV90cmVlLmluc2VydFNjcmlwdEVsZW1lbnQodG9rZW4pOwotICAgIGlm
IChtX3BhcnNlci0+dG9rZW5pemVyKCkpCi0gICAgICAgIG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+
c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6U2NyaXB0RGF0YVN0YXRlKTsKKyAgICBpZiAobV9wYXJz
ZXIudG9rZW5pemVyKCkpCisgICAgICAgIG1fcGFyc2VyLnRva2VuaXplcigpLT5zZXRTdGF0ZShI
VE1MVG9rZW5pemVyOjpTY3JpcHREYXRhU3RhdGUpOwogICAgIG1fb3JpZ2luYWxJbnNlcnRpb25N
b2RlID0gbV9pbnNlcnRpb25Nb2RlOwogCi0gICAgVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0gbV9w
YXJzZXItPnRleHRQb3NpdGlvbigpOworICAgIFRleHRQb3NpdGlvbiBwb3NpdGlvbiA9IG1fcGFy
c2VyLnRleHRQb3NpdGlvbigpOwogCiAgICAgbV9zY3JpcHRUb1Byb2Nlc3NTdGFydFBvc2l0aW9u
ID0gcG9zaXRpb247CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVl
QnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxU
cmVlQnVpbGRlci5oCShyZXZpc2lvbiAxNTY5NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVHJlZUJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTEgKzU3LDExIEBA
IGNsYXNzIEhUTUxEb2N1bWVudFBhcnNlcjsKIGNsYXNzIEhUTUxUcmVlQnVpbGRlciB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSFRNTFRyZWVCdWlsZGVyKTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIE93blB0cjxIVE1MVHJlZUJ1aWxkZXI+IGNyZWF0
ZShIVE1MRG9jdW1lbnRQYXJzZXIqIHBhcnNlciwgSFRNTERvY3VtZW50KiBkb2N1bWVudCwgUGFy
c2VyQ29udGVudFBvbGljeSBwYXJzZXJDb250ZW50UG9saWN5LCBib29sIHJlcG9ydEVycm9ycywg
Y29uc3QgSFRNTFBhcnNlck9wdGlvbnMmIG9wdGlvbnMpCisgICAgc3RhdGljIE93blB0cjxIVE1M
VHJlZUJ1aWxkZXI+IGNyZWF0ZShIVE1MRG9jdW1lbnRQYXJzZXImIHBhcnNlciwgSFRNTERvY3Vt
ZW50JiBkb2N1bWVudCwgUGFyc2VyQ29udGVudFBvbGljeSBwYXJzZXJDb250ZW50UG9saWN5LCBi
b29sIHJlcG9ydEVycm9ycywgY29uc3QgSFRNTFBhcnNlck9wdGlvbnMmIG9wdGlvbnMpCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEhUTUxUcmVlQnVpbGRlcihwYXJzZXIsIGRv
Y3VtZW50LCBwYXJzZXJDb250ZW50UG9saWN5LCByZXBvcnRFcnJvcnMsIG9wdGlvbnMpKTsKICAg
ICB9Ci0gICAgc3RhdGljIE93blB0cjxIVE1MVHJlZUJ1aWxkZXI+IGNyZWF0ZShIVE1MRG9jdW1l
bnRQYXJzZXIqIHBhcnNlciwgRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEVsZW1lbnQqIGNv
bnRleHRFbGVtZW50LCBQYXJzZXJDb250ZW50UG9saWN5IHBhcnNlckNvbnRlbnRQb2xpY3ksIGNv
bnN0IEhUTUxQYXJzZXJPcHRpb25zJiBvcHRpb25zKQorICAgIHN0YXRpYyBPd25QdHI8SFRNTFRy
ZWVCdWlsZGVyPiBjcmVhdGUoSFRNTERvY3VtZW50UGFyc2VyJiBwYXJzZXIsIERvY3VtZW50RnJh
Z21lbnQmIGZyYWdtZW50LCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgUGFyc2VyQ29udGVudFBv
bGljeSBwYXJzZXJDb250ZW50UG9saWN5LCBjb25zdCBIVE1MUGFyc2VyT3B0aW9ucyYgb3B0aW9u
cykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgSFRNTFRyZWVCdWlsZGVyKHBh
cnNlciwgZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBwYXJzZXJDb250ZW50UG9saWN5LCBvcHRp
b25zKSk7CiAgICAgfQpAQCAtMTIwLDggKzEyMCw4IEBAIHByaXZhdGU6CiAgICAgICAgIEFmdGVy
QWZ0ZXJGcmFtZXNldE1vZGUsCiAgICAgfTsKIAotICAgIEhUTUxUcmVlQnVpbGRlcihIVE1MRG9j
dW1lbnRQYXJzZXIqLCBIVE1MRG9jdW1lbnQqLCBQYXJzZXJDb250ZW50UG9saWN5LCBib29sIHJl
cG9ydEVycm9ycywgY29uc3QgSFRNTFBhcnNlck9wdGlvbnMmKTsKLSAgICBIVE1MVHJlZUJ1aWxk
ZXIoSFRNTERvY3VtZW50UGFyc2VyKiwgRG9jdW1lbnRGcmFnbWVudCosIEVsZW1lbnQqIGNvbnRl
eHRFbGVtZW50LCBQYXJzZXJDb250ZW50UG9saWN5LCBjb25zdCBIVE1MUGFyc2VyT3B0aW9ucyYp
OworICAgIEhUTUxUcmVlQnVpbGRlcihIVE1MRG9jdW1lbnRQYXJzZXImLCBIVE1MRG9jdW1lbnQm
LCBQYXJzZXJDb250ZW50UG9saWN5LCBib29sIHJlcG9ydEVycm9ycywgY29uc3QgSFRNTFBhcnNl
ck9wdGlvbnMmKTsKKyAgICBIVE1MVHJlZUJ1aWxkZXIoSFRNTERvY3VtZW50UGFyc2VyJiwgRG9j
dW1lbnRGcmFnbWVudCYsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBQYXJzZXJDb250ZW50UG9s
aWN5LCBjb25zdCBIVE1MUGFyc2VyT3B0aW9ucyYpOwogCiAgICAgdm9pZCBwcm9jZXNzVG9rZW4o
QXRvbWljSFRNTFRva2VuKik7CiAKQEAgLTIwMyw3ICsyMDMsNyBAQCBwcml2YXRlOgogICAgICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShGcmFnbWVudFBhcnNpbmdDb250ZXh0KTsKICAgICBwdWJs
aWM6CiAgICAgICAgIEZyYWdtZW50UGFyc2luZ0NvbnRleHQoKTsKLSAgICAgICAgRnJhZ21lbnRQ
YXJzaW5nQ29udGV4dChEb2N1bWVudEZyYWdtZW50KiwgRWxlbWVudCogY29udGV4dEVsZW1lbnQp
OworICAgICAgICBGcmFnbWVudFBhcnNpbmdDb250ZXh0KERvY3VtZW50RnJhZ21lbnQmLCBFbGVt
ZW50KiBjb250ZXh0RWxlbWVudCk7CiAgICAgICAgIH5GcmFnbWVudFBhcnNpbmdDb250ZXh0KCk7
CiAKICAgICAgICAgRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiBt
X2ZyYWdtZW50OyB9CkBAIC0yMzgsNyArMjM4LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlIGFj
Y2VzcyBwYXJzZXIgYmVjYXVzZSBIVE1MNSBzcGVjIHJlcXVpcmVzIHRoYXQgd2UgYmUgYWJsZSB0
byBjaGFuZ2UgdGhlIHN0YXRlIG9mIHRoZSB0b2tlbml6ZXIKICAgICAvLyBmcm9tIHdpdGhpbiBw
YXJzZXIgYWN0aW9ucy4gV2UgYWxzbyBuZWVkIGl0IHRvIHRyYWNrIHRoZSBjdXJyZW50IHBvc2l0
aW9uLgotICAgIEhUTUxEb2N1bWVudFBhcnNlciogbV9wYXJzZXI7CisgICAgSFRNTERvY3VtZW50
UGFyc2VyJiBtX3BhcnNlcjsKIAogICAgIFJlZlB0cjxFbGVtZW50PiBtX3NjcmlwdFRvUHJvY2Vz
czsgLy8gPHNjcmlwdD4gdGFnIHdoaWNoIG5lZWRzIHByb2Nlc3NpbmcgYmVmb3JlIHJlc3VtaW5n
IHRoZSBwYXJzZXIuCiAgICAgVGV4dFBvc2l0aW9uIG1fc2NyaXB0VG9Qcm9jZXNzU3RhcnRQb3Np
dGlvbjsgLy8gU3RhcnRpbmcgbGluZSBudW1iZXIgb2YgdGhlIHNjcmlwdCB0YWcgbmVlZGluZyBw
cm9jZXNzaW5nLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFZpZXdTb3Vy
Y2VQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxWaWV3U291cmNlUGFyc2VyLmNwcAkocmV2aXNpb24gMTU2OTc3KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSFRNTFZpZXdTb3VyY2VQ
YXJzZXI6OkhUTUxWaWV3U291cmNlUGFyc2VyKEhUTUxWaWV3U291cmNlRG9jdW1lbnQqIGRvY3Vt
ZW50KQorSFRNTFZpZXdTb3VyY2VQYXJzZXI6OkhUTUxWaWV3U291cmNlUGFyc2VyKEhUTUxWaWV3
U291cmNlRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogRGVjb2RlZERhdGFEb2N1bWVudFBhcnNl
cihkb2N1bWVudCkKICAgICAsIG1fdG9rZW5pemVyKEhUTUxUb2tlbml6ZXI6OmNyZWF0ZShIVE1M
UGFyc2VyT3B0aW9ucyhkb2N1bWVudCkpKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFZpZXdTb3VyY2VQYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5oCShyZXZpc2lvbiAxNTY5NzcpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MywxNiArNDMsMTYgQEAgY2xhc3MgSFRNTFByZWxvYWRTY2FubmVyOwog
Y2xhc3MgU2NyaXB0Q29udHJvbGxlcjsKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CiAKLWNsYXNz
IEhUTUxWaWV3U291cmNlUGFyc2VyIDogIHB1YmxpYyBEZWNvZGVkRGF0YURvY3VtZW50UGFyc2Vy
IHsKK2NsYXNzIEhUTUxWaWV3U291cmNlUGFyc2VyIDogcHVibGljIERlY29kZWREYXRhRG9jdW1l
bnRQYXJzZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxWaWV3U291cmNl
UGFyc2VyPiBjcmVhdGUoSFRNTFZpZXdTb3VyY2VEb2N1bWVudCogZG9jdW1lbnQpCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SFRNTFZpZXdTb3VyY2VQYXJzZXI+IGNyZWF0ZShIVE1MVmlld1NvdXJj
ZURvY3VtZW50JiBkb2N1bWVudCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SFRNTFZpZXdTb3VyY2VQYXJzZXIoZG9jdW1lbnQpKTsKICAgICB9CiAgICAgdmlydHVhbCB+SFRN
TFZpZXdTb3VyY2VQYXJzZXIoKTsKIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IEhUTUxWaWV3
U291cmNlUGFyc2VyKEhUTUxWaWV3U291cmNlRG9jdW1lbnQqKTsKKyAgICBleHBsaWNpdCBIVE1M
Vmlld1NvdXJjZVBhcnNlcihIVE1MVmlld1NvdXJjZURvY3VtZW50Jik7CiAKICAgICBIVE1MVG9r
ZW5pemVyKiB0b2tlbml6ZXIoKSBjb25zdCB7IHJldHVybiBtX3Rva2VuaXplci5nZXQoKTsgfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBh
cnNlci5jcHAJKHJldmlzaW9uIDE1Njk3NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L1RleHREb2N1bWVudFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1UZXh0
RG9jdW1lbnRQYXJzZXI6OlRleHREb2N1bWVudFBhcnNlcihIVE1MRG9jdW1lbnQqIGRvY3VtZW50
KQorVGV4dERvY3VtZW50UGFyc2VyOjpUZXh0RG9jdW1lbnRQYXJzZXIoSFRNTERvY3VtZW50JiBk
b2N1bWVudCkKICAgICA6IEhUTUxEb2N1bWVudFBhcnNlcihkb2N1bWVudCwgZmFsc2UpCiAgICAg
LCBtX2hhdmVJbnNlcnRlZEZha2VQcmVFbGVtZW50KGZhbHNlKQogewpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmgJKHJldmlzaW9uIDE1
Njk3NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxOCArMzAsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBUZXh0RG9jdW1lbnRQYXJzZXIgOiBwdWJsaWMgSFRNTERvY3VtZW50UGFyc2Vy
IHsKK2NsYXNzIFRleHREb2N1bWVudFBhcnNlciBGSU5BTCA6IHB1YmxpYyBIVE1MRG9jdW1lbnRQ
YXJzZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHREb2N1bWVudFBhcnNl
cj4gY3JlYXRlKEhUTUxEb2N1bWVudCogZG9jdW1lbnQpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
VGV4dERvY3VtZW50UGFyc2VyPiBjcmVhdGUoSFRNTERvY3VtZW50JiBkb2N1bWVudCkKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dERvY3VtZW50UGFyc2VyKGRvY3VtZW50
KSk7CiAgICAgfQogICAgIHZpcnR1YWwgflRleHREb2N1bWVudFBhcnNlcigpOwogCiBwcml2YXRl
OgotICAgIGV4cGxpY2l0IFRleHREb2N1bWVudFBhcnNlcihIVE1MRG9jdW1lbnQqKTsKKyAgICBl
eHBsaWNpdCBUZXh0RG9jdW1lbnRQYXJzZXIoSFRNTERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4pOworICAgIHZpcnR1YWwgdm9pZCBh
cHBlbmQoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPikgT1ZFUlJJREU7CiAgICAgdm9pZCBpbnNlcnRG
YWtlUHJlRWxlbWVudCgpOwogCiAgICAgYm9vbCBtX2hhdmVJbnNlcnRlZEZha2VQcmVFbGVtZW50
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dFZpZXdTb3VyY2VQYXJzZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHRWaWV3U291
cmNlUGFyc2VyLmNwcAkocmV2aXNpb24gMTU2OTc3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvVGV4dFZpZXdTb3VyY2VQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICsz
MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVGV4dFZpZXdTb3VyY2VQYXJzZXI6OlRl
eHRWaWV3U291cmNlUGFyc2VyKEhUTUxWaWV3U291cmNlRG9jdW1lbnQqIGRvY3VtZW50KQorVGV4
dFZpZXdTb3VyY2VQYXJzZXI6OlRleHRWaWV3U291cmNlUGFyc2VyKEhUTUxWaWV3U291cmNlRG9j
dW1lbnQmIGRvY3VtZW50KQogICAgIDogSFRNTFZpZXdTb3VyY2VQYXJzZXIoZG9jdW1lbnQpCiB7
CiAgICAgdG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlBMQUlOVEVYVFN0YXRl
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHRWaWV3U291cmNlUGFyc2Vy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dFZpZXdTb3Vy
Y2VQYXJzZXIuaAkocmV2aXNpb24gMTU2OTc3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvVGV4dFZpZXdTb3VyY2VQYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTYgKzMwLDE2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVGV4dFZpZXdTb3VyY2VQYXJzZXIg
OiAgcHVibGljIEhUTUxWaWV3U291cmNlUGFyc2VyIHsKK2NsYXNzIFRleHRWaWV3U291cmNlUGFy
c2VyIEZJTkFMIDogcHVibGljIEhUTUxWaWV3U291cmNlUGFyc2VyIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxUZXh0Vmlld1NvdXJjZVBhcnNlcj4gY3JlYXRlKEhUTUxWaWV3U291
cmNlRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHRWaWV3U291
cmNlUGFyc2VyPiBjcmVhdGUoSFRNTFZpZXdTb3VyY2VEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRWaWV3U291cmNlUGFyc2VyKGRvY3Vt
ZW50KSk7CiAgICAgfQogICAgIHZpcnR1YWwgflRleHRWaWV3U291cmNlUGFyc2VyKCk7CiAKIHBy
aXZhdGU6Ci0gICAgZXhwbGljaXQgVGV4dFZpZXdTb3VyY2VQYXJzZXIoSFRNTFZpZXdTb3VyY2VE
b2N1bWVudCopOworICAgIGV4cGxpY2l0IFRleHRWaWV3U291cmNlUGFyc2VyKEhUTUxWaWV3U291
cmNlRG9jdW1lbnQmKTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L1hTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcAkocmV2aXNpb24gMTU2OTc3KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDMsMTIgKzQzLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotWFNTQXVk
aXRvckRlbGVnYXRlOjpYU1NBdWRpdG9yRGVsZWdhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQorWFNT
QXVkaXRvckRlbGVnYXRlOjpYU1NBdWRpdG9yRGVsZWdhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQog
ICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKICAgICAsIG1fZGlkU2VuZE5vdGlmaWNhdGlvbnMo
ZmFsc2UpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NFUlQobV9kb2N1
bWVudCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGJ1aWxkQ29uc29sZUVycm9yKGNvbnN0
IFhTU0luZm8mIHhzc0luZm8sIGNvbnN0IFN0cmluZyYgdXJsKQpAQCAtNzYsNyArNzUsNyBAQCBQ
YXNzUmVmUHRyPEZvcm1EYXRhPiBYU1NBdWRpdG9yRGVsZWdhdGU6CiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKIAotICAgIEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciA9IG1fZG9jdW1l
bnQtPmZyYW1lKCktPmxvYWRlcigpOworICAgIEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciA9IG1f
ZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCk7CiAgICAgU3RyaW5nIGh0dHBCb2R5OwogICAgIGlm
IChmcmFtZUxvYWRlci5kb2N1bWVudExvYWRlcigpKSB7CiAgICAgICAgIGlmIChGb3JtRGF0YSog
Zm9ybURhdGEgPSBmcmFtZUxvYWRlci5kb2N1bWVudExvYWRlcigpLT5vcmlnaW5hbFJlcXVlc3Qo
KS5odHRwQm9keSgpKQpAQCAtODQsNyArODMsNyBAQCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBYU1NB
dWRpdG9yRGVsZWdhdGU6CiAgICAgfQogCiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVw
b3J0RGV0YWlscyA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgcmVwb3J0RGV0YWls
cy0+c2V0U3RyaW5nKCJyZXF1ZXN0LXVybCIsIG1fZG9jdW1lbnQtPnVybCgpLnN0cmluZygpKTsK
KyAgICByZXBvcnREZXRhaWxzLT5zZXRTdHJpbmcoInJlcXVlc3QtdXJsIiwgbV9kb2N1bWVudC51
cmwoKS5zdHJpbmcoKSk7CiAgICAgcmVwb3J0RGV0YWlscy0+c2V0U3RyaW5nKCJyZXF1ZXN0LWJv
ZHkiLCBodHRwQm9keSk7CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXBvcnRPYmpl
Y3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwpAQCAtOTcsMjMgKzk2LDIzIEBAIHZvaWQg
WFNTQXVkaXRvckRlbGVnYXRlOjpkaWRCbG9ja1NjcmlwdCgKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogCi0gICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdl
U291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgYnVpbGRDb25zb2xlRXJyb3IoeHNzSW5mbywgbV9k
b2N1bWVudC0+dXJsKCkuc3RyaW5nKCkpKTsKKyAgICBtX2RvY3VtZW50LmFkZENvbnNvbGVNZXNz
YWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGJ1aWxkQ29uc29sZUVycm9y
KHhzc0luZm8sIG1fZG9jdW1lbnQudXJsKCkuc3RyaW5nKCkpKTsKIAotICAgIEZyYW1lTG9hZGVy
JiBmcmFtZUxvYWRlciA9IG1fZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigpOworICAgIEZyYW1l
TG9hZGVyJiBmcmFtZUxvYWRlciA9IG1fZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCk7CiAgICAg
aWYgKHhzc0luZm8ubV9kaWRCbG9ja0VudGlyZVBhZ2UpCiAgICAgICAgIGZyYW1lTG9hZGVyLnN0
b3BBbGxMb2FkZXJzKCk7CiAKICAgICBpZiAoIW1fZGlkU2VuZE5vdGlmaWNhdGlvbnMpIHsKICAg
ICAgICAgbV9kaWRTZW5kTm90aWZpY2F0aW9ucyA9IHRydWU7CiAKLSAgICAgICAgZnJhbWVMb2Fk
ZXIuY2xpZW50KCkuZGlkRGV0ZWN0WFNTKG1fZG9jdW1lbnQtPnVybCgpLCB4c3NJbmZvLm1fZGlk
QmxvY2tFbnRpcmVQYWdlKTsKKyAgICAgICAgZnJhbWVMb2FkZXIuY2xpZW50KCkuZGlkRGV0ZWN0
WFNTKG1fZG9jdW1lbnQudXJsKCksIHhzc0luZm8ubV9kaWRCbG9ja0VudGlyZVBhZ2UpOwogCiAg
ICAgICAgIGlmICghbV9yZXBvcnRVUkwuaXNFbXB0eSgpKQotICAgICAgICAgICAgUGluZ0xvYWRl
cjo6c2VuZFZpb2xhdGlvblJlcG9ydChtX2RvY3VtZW50LT5mcmFtZSgpLCBtX3JlcG9ydFVSTCwg
Z2VuZXJhdGVWaW9sYXRpb25SZXBvcnQoKSk7CisgICAgICAgICAgICBQaW5nTG9hZGVyOjpzZW5k
VmlvbGF0aW9uUmVwb3J0KG1fZG9jdW1lbnQuZnJhbWUoKSwgbV9yZXBvcnRVUkwsIGdlbmVyYXRl
VmlvbGF0aW9uUmVwb3J0KCkpOwogICAgIH0KIAogICAgIGlmICh4c3NJbmZvLm1fZGlkQmxvY2tF
bnRpcmVQYWdlKQotICAgICAgICBtX2RvY3VtZW50LT5mcmFtZSgpLT5uYXZpZ2F0aW9uU2NoZWR1
bGVyKCkuc2NoZWR1bGVMb2NhdGlvbkNoYW5nZShtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigp
LCBTZWN1cml0eU9yaWdpbjo6dXJsV2l0aFVuaXF1ZVNlY3VyaXR5T3JpZ2luKCksIFN0cmluZygp
KTsKKyAgICAgICAgbV9kb2N1bWVudC5mcmFtZSgpLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2No
ZWR1bGVMb2NhdGlvbkNoYW5nZShtX2RvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCksIFNlY3VyaXR5
T3JpZ2luOjp1cmxXaXRoVW5pcXVlU2VjdXJpdHlPcmlnaW4oKSwgU3RyaW5nKCkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Y
U1NBdWRpdG9yRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuaAkocmV2aXNpb24gMTU2OTc3KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU0LDEzICs1NCwxNCBAQCBwcml2YXRlOgogICAgICAgICA6IG1fZGlkQmxvY2tFbnRpcmVQYWdl
KGRpZEJsb2NrRW50aXJlUGFnZSkKICAgICAgICAgLCBtX2RpZFNlbmRYU1NQcm90ZWN0aW9uSGVh
ZGVyKGRpZFNlbmRYU1NQcm90ZWN0aW9uSGVhZGVyKQogICAgICAgICAsIG1fZGlkU2VuZENTUEhl
YWRlcihkaWRTZW5kQ1NQSGVhZGVyKQotICAgIHsgfQorICAgIHsKKyAgICB9CiB9OwogCiBjbGFz
cyBYU1NBdWRpdG9yRGVsZWdhdGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFhTU0F1ZGl0
b3JEZWxlZ2F0ZSk7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgWFNTQXVkaXRvckRlbGVnYXRlKERv
Y3VtZW50Kik7CisgICAgZXhwbGljaXQgWFNTQXVkaXRvckRlbGVnYXRlKERvY3VtZW50Jik7CiAK
ICAgICB2b2lkIGRpZEJsb2NrU2NyaXB0KGNvbnN0IFhTU0luZm8mKTsKICAgICB2b2lkIHNldFJl
cG9ydFVSTChjb25zdCBVUkwmIHVybCkgeyBtX3JlcG9ydFVSTCA9IHVybDsgfQpAQCAtNjgsMTIg
KzY5LDEyIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZ2Vu
ZXJhdGVWaW9sYXRpb25SZXBvcnQoKTsKIAotICAgIERvY3VtZW50KiBtX2RvY3VtZW50OworICAg
IERvY3VtZW50JiBtX2RvY3VtZW50OwogICAgIGJvb2wgbV9kaWRTZW5kTm90aWZpY2F0aW9uczsK
ICAgICBVUkwgbV9yZXBvcnRVUkw7CiB9OwogCi10eXBlZGVmIFZlY3RvcjxPd25QdHI8WFNTSW5m
bz4gPiBYU1NJbmZvU3RyZWFtOwordHlwZWRlZiBWZWN0b3I8T3duUHRyPFhTU0luZm8+PiBYU1NJ
bmZvU3RyZWFtOwogCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRj
aFN1cHBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Q
YXRjaFN1cHBvcnQuY3BwCShyZXZpc2lvbiAxNTY5NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDEwICsxMDEs
MTAgQEAgdm9pZCBET01QYXRjaFN1cHBvcnQ6OnBhdGNoRG9jdW1lbnQoY29ucwogCiAgICAgQVNT
RVJUKG5ld0RvY3VtZW50KTsKICAgICBSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IHBhcnNlcjsKLSAg
ICBpZiAobV9kb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgcGFyc2VyID0gSFRN
TERvY3VtZW50UGFyc2VyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4obmV3RG9j
dW1lbnQuZ2V0KCkpLCBmYWxzZSk7CisgICAgaWYgKG5ld0RvY3VtZW50LT5pc0hUTUxEb2N1bWVu
dCgpKQorICAgICAgICBwYXJzZXIgPSBIVE1MRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxIVE1MRG9jdW1lbnQmPigqbmV3RG9jdW1lbnQpLCBmYWxzZSk7CiAgICAgZWxzZQotICAg
ICAgICBwYXJzZXIgPSBYTUxEb2N1bWVudFBhcnNlcjo6Y3JlYXRlKG5ld0RvY3VtZW50LmdldCgp
LCAwKTsKKyAgICAgICAgcGFyc2VyID0gWE1MRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZSgqbmV3RG9j
dW1lbnQsIDApOwogICAgIHBhcnNlci0+aW5zZXJ0KG1hcmt1cCk7IC8vIFVzZSBpbnNlcnQoKSBz
byB0aGF0IHRoZSBwYXJzZXIgd2lsbCBub3QgeWllbGQuCiAgICAgcGFyc2VyLT5maW5pc2goKTsK
ICAgICBwYXJzZXItPmRldGFjaCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1NpbmtE
b2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1
bWVudC5jcHAJKHJldmlzaW9uIDE1Njk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5r
RG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNSArMzAsMTUgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaW5rRG9jdW1lbnRQYXJzZXIgOiBwdWJsaWMgUmF3RGF0
YURvY3VtZW50UGFyc2VyIHsKK2NsYXNzIFNpbmtEb2N1bWVudFBhcnNlciBGSU5BTCA6IHB1Ymxp
YyBSYXdEYXRhRG9jdW1lbnRQYXJzZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNpbmtEb2N1bWVudFBhcnNlcj4gY3JlYXRlKFNpbmtEb2N1bWVudCogZG9jdW1lbnQpCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8U2lua0RvY3VtZW50UGFyc2VyPiBjcmVhdGUoU2lua0RvY3VtZW50
JiBkb2N1bWVudCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2lua0RvY3Vt
ZW50UGFyc2VyKGRvY3VtZW50KSk7CiAgICAgfQogICAgIAogcHJpdmF0ZToKLSAgICBTaW5rRG9j
dW1lbnRQYXJzZXIoU2lua0RvY3VtZW50KiBkb2N1bWVudCkKKyAgICBTaW5rRG9jdW1lbnRQYXJz
ZXIoU2lua0RvY3VtZW50JiBkb2N1bWVudCkKICAgICAgICAgOiBSYXdEYXRhRG9jdW1lbnRQYXJz
ZXIoZG9jdW1lbnQpCiAgICAgewogICAgIH0KQEAgLTU4LDcgKzU4LDcgQEAgU2lua0RvY3VtZW50
OjpTaW5rRG9jdW1lbnQoRnJhbWUqIGZyYW1lLAogCiBQYXNzUmVmUHRyPERvY3VtZW50UGFyc2Vy
PiBTaW5rRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiB7Ci0gICAgcmV0dXJuIFNpbmtEb2N1bWVu
dFBhcnNlcjo6Y3JlYXRlKHRoaXMpOworICAgIHJldHVybiBTaW5rRG9jdW1lbnRQYXJzZXI6OmNy
ZWF0ZSgqdGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCShyZXZpc2lvbiAx
NTY5NzcpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJz
ZXI6OnBhdXNlUGFyc2luZygpCiAgICAgbV9wYXJzZXJQYXVzZWQgPSB0cnVlOwogfQogCi1ib29s
IFhNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQoY29uc3QgU3RyaW5nJiBj
aHVuaywgRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50
LCBQYXJzZXJDb250ZW50UG9saWN5IHBhcnNlckNvbnRlbnRQb2xpY3kpCitib29sIFhNTERvY3Vt
ZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQoY29uc3QgU3RyaW5nJiBjaHVuaywgRG9j
dW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBQYXJzZXJD
b250ZW50UG9saWN5IHBhcnNlckNvbnRlbnRQb2xpY3kpCiB7CiAgICAgaWYgKCFjaHVuay5sZW5n
dGgoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yODYsNyArMjg2LDcgQEAgYm9vbCBYTUxE
b2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYQogICAgIC8vIGh0dHA6Ly93d3cud2hhdHdn
Lm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS14aHRtbC1zeW50
YXguaHRtbCN4bWwtZnJhZ21lbnQtcGFyc2luZy1hbGdvcml0aG0KICAgICAvLyBGb3Igbm93IHdl
IGhhdmUgYSBoYWNrIGZvciBzY3JpcHQvc3R5bGUgaW5uZXJIVE1MIHN1cHBvcnQ6CiAgICAgaWYg
KGNvbnRleHRFbGVtZW50ICYmIChjb250ZXh0RWxlbWVudC0+aGFzTG9jYWxOYW1lKEhUTUxOYW1l
czo6c2NyaXB0VGFnKSB8fCBjb250ZXh0RWxlbWVudC0+aGFzTG9jYWxOYW1lKEhUTUxOYW1lczo6
c3R5bGVUYWcpKSkgewotICAgICAgICBmcmFnbWVudC0+cGFyc2VyQXBwZW5kQ2hpbGQoZnJhZ21l
bnQtPmRvY3VtZW50KCkuY3JlYXRlVGV4dE5vZGUoY2h1bmspKTsKKyAgICAgICAgZnJhZ21lbnQu
cGFyc2VyQXBwZW5kQ2hpbGQoZnJhZ21lbnQuZG9jdW1lbnQoKS5jcmVhdGVUZXh0Tm9kZShjaHVu
aykpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmgJKHJldmlzaW9uIDE1Njk3NykKKysr
IFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNjksMTEgKzY5LDExIEBAIGNsYXNzIFRleHQ7CiAgICAgY2xhc3MgWE1MRG9jdW1l
bnRQYXJzZXIgOiBwdWJsaWMgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLCBwdWJsaWMgQ2FjaGVk
UmVzb3VyY2VDbGllbnQgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBw
dWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFhNTERvY3VtZW50UGFyc2VyPiBjcmVh
dGUoRG9jdW1lbnQqIGRvY3VtZW50LCBGcmFtZVZpZXcqIHZpZXcpCisgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFhNTERvY3VtZW50UGFyc2VyPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBG
cmFtZVZpZXcqIHZpZXcpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgWE1MRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQsIHZpZXcpKTsKICAgICAgICAgfQotICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxYTUxEb2N1bWVudFBhcnNlcj4gY3JlYXRlKERvY3VtZW50RnJh
Z21lbnQqIGZyYWdtZW50LCBFbGVtZW50KiBlbGVtZW50LCBQYXJzZXJDb250ZW50UG9saWN5IHBh
cnNlckNvbnRlbnRQb2xpY3kpCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFhNTERvY3VtZW50
UGFyc2VyPiBjcmVhdGUoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIEVsZW1lbnQqIGVsZW1l
bnQsIFBhcnNlckNvbnRlbnRQb2xpY3kgcGFyc2VyQ29udGVudFBvbGljeSkKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBYTUxEb2N1bWVudFBhcnNlcihmcmFnbWVu
dCwgZWxlbWVudCwgcGFyc2VyQ29udGVudFBvbGljeSkpOwogICAgICAgICB9CkBAIC04Niw3ICs4
Niw3IEBAIGNsYXNzIFRleHQ7CiAgICAgICAgIHZvaWQgc2V0SXNYSFRNTERvY3VtZW50KGJvb2wg
aXNYSFRNTCkgeyBtX2lzWEhUTUxEb2N1bWVudCA9IGlzWEhUTUw7IH0KICAgICAgICAgYm9vbCBp
c1hIVE1MRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2lzWEhUTUxEb2N1bWVudDsgfQogCi0g
ICAgICAgIHN0YXRpYyBib29sIHBhcnNlRG9jdW1lbnRGcmFnbWVudChjb25zdCBTdHJpbmcmLCBE
b2N1bWVudEZyYWdtZW50KiwgRWxlbWVudCogcGFyZW50ID0gMCwgUGFyc2VyQ29udGVudFBvbGlj
eSA9IEFsbG93U2NyaXB0aW5nQ29udGVudCk7CisgICAgICAgIHN0YXRpYyBib29sIHBhcnNlRG9j
dW1lbnRGcmFnbWVudChjb25zdCBTdHJpbmcmLCBEb2N1bWVudEZyYWdtZW50JiwgRWxlbWVudCog
cGFyZW50ID0gMCwgUGFyc2VyQ29udGVudFBvbGljeSA9IEFsbG93U2NyaXB0aW5nQ29udGVudCk7
CiAKICAgICAgICAgLy8gVXNlZCBieSB0aGUgWE1MSHR0cFJlcXVlc3QgdG8gY2hlY2sgaWYgdGhl
IHJlc3BvbnNlWE1MIHdhcyB3ZWxsIGZvcm1lZC4KICAgICAgICAgdmlydHVhbCBib29sIHdlbGxG
b3JtZWQoKSBjb25zdCB7IHJldHVybiAhbV9zYXdFcnJvcjsgfQpAQCAtOTYsOCArOTYsOCBAQCBj
bGFzcyBUZXh0OwogICAgICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1hNTFZlcnNpb24oY29uc3Qg
U3RyaW5nJik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBYTUxEb2N1bWVudFBhcnNlcihEb2N1
bWVudCosIEZyYW1lVmlldyogPSAwKTsKLSAgICAgICAgWE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1l
bnRGcmFnbWVudCosIEVsZW1lbnQqLCBQYXJzZXJDb250ZW50UG9saWN5KTsKKyAgICAgICAgWE1M
RG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQmLCBGcmFtZVZpZXcqID0gMCk7CisgICAgICAgIFhNTERv
Y3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQmLCBFbGVtZW50KiwgUGFyc2VyQ29udGVudFBv
bGljeSk7CiAKICAgICAgICAgLy8gRnJvbSBEb2N1bWVudFBhcnNlcgogICAgICAgICB2aXJ0dWFs
IHZvaWQgaW5zZXJ0KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYpOwpJbmRleDogU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAko
cmV2aXNpb24gMTU2OTc3KQorKysgU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlckxpYnhtbDIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NzYsMTQgKzU3NiwxNCBAQCBi
b29sIFhNTERvY3VtZW50UGFyc2VyOjpzdXBwb3J0c1hNTFZlcnNpCiAgICAgcmV0dXJuIHZlcnNp
b24gPT0gIjEuMCI7CiB9CiAKLVhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcihE
b2N1bWVudCogZG9jdW1lbnQsIEZyYW1lVmlldyogZnJhbWVWaWV3KQorWE1MRG9jdW1lbnRQYXJz
ZXI6OlhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50JiBkb2N1bWVudCwgRnJhbWVWaWV3KiBmcmFt
ZVZpZXcpCiAgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpCiAgICAgLCBt
X3ZpZXcoZnJhbWVWaWV3KQogICAgICwgbV9jb250ZXh0KDApCiAgICAgLCBtX3BlbmRpbmdDYWxs
YmFja3MoUGVuZGluZ0NhbGxiYWNrczo6Y3JlYXRlKCkpCiAgICAgLCBtX2RlcHRoVHJpZ2dlcmlu
Z0VudGl0eUV4cGFuc2lvbigtMSkKICAgICAsIG1faXNQYXJzaW5nRW50aXR5RGVjbGFyYXRpb24o
ZmFsc2UpCi0gICAgLCBtX2N1cnJlbnROb2RlKGRvY3VtZW50KQorICAgICwgbV9jdXJyZW50Tm9k
ZSgmZG9jdW1lbnQpCiAgICAgLCBtX3Nhd0Vycm9yKGZhbHNlKQogICAgICwgbV9zYXdDU1MoZmFs
c2UpCiAgICAgLCBtX3Nhd1hTTFRyYW5zZm9ybShmYWxzZSkKQEAgLTU5OCwxNCArNTk4LDE0IEBA
IFhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcihEb2MKIHsKIH0KIAotWE1MRG9j
dW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50
LCBFbGVtZW50KiBwYXJlbnRFbGVtZW50LCBQYXJzZXJDb250ZW50UG9saWN5IHBhcnNlckNvbnRl
bnRQb2xpY3kpCi0gICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoJmZyYWdtZW50LT5kb2N1
bWVudCgpLCBwYXJzZXJDb250ZW50UG9saWN5KQorWE1MRG9jdW1lbnRQYXJzZXI6OlhNTERvY3Vt
ZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBFbGVtZW50KiBwYXJlbnRFbGVt
ZW50LCBQYXJzZXJDb250ZW50UG9saWN5IHBhcnNlckNvbnRlbnRQb2xpY3kpCisgICAgOiBTY3Jp
cHRhYmxlRG9jdW1lbnRQYXJzZXIoZnJhZ21lbnQuZG9jdW1lbnQoKSwgcGFyc2VyQ29udGVudFBv
bGljeSkKICAgICAsIG1fdmlldygwKQogICAgICwgbV9jb250ZXh0KDApCiAgICAgLCBtX3BlbmRp
bmdDYWxsYmFja3MoUGVuZGluZ0NhbGxiYWNrczo6Y3JlYXRlKCkpCiAgICAgLCBtX2RlcHRoVHJp
Z2dlcmluZ0VudGl0eUV4cGFuc2lvbigtMSkKICAgICAsIG1faXNQYXJzaW5nRW50aXR5RGVjbGFy
YXRpb24oZmFsc2UpCi0gICAgLCBtX2N1cnJlbnROb2RlKGZyYWdtZW50KQorICAgICwgbV9jdXJy
ZW50Tm9kZSgmZnJhZ21lbnQpCiAgICAgLCBtX3Nhd0Vycm9yKGZhbHNlKQogICAgICwgbV9zYXdD
U1MoZmFsc2UpCiAgICAgLCBtX3Nhd1hTTFRyYW5zZm9ybShmYWxzZSkKQEAgLTYxOCw3ICs2MTgs
NyBAQCBYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9jCiAgICAgLCBtX3Nj
cmlwdFN0YXJ0UG9zaXRpb24oVGV4dFBvc2l0aW9uOjpiZWxvd1JhbmdlUG9zaXRpb24oKSkKICAg
ICAsIG1fcGFyc2luZ0ZyYWdtZW50KHRydWUpCiB7Ci0gICAgZnJhZ21lbnQtPnJlZigpOworICAg
IGZyYWdtZW50LnJlZigpOwogCiAgICAgLy8gQWRkIG5hbWVzcGFjZXMgYmFzZWQgb24gdGhlIHBh
cmVudCBub2RlCiAgICAgVmVjdG9yPEVsZW1lbnQqPiBlbGVtU3RhY2s7Cg==
</data>
<flag name="review"
          id="235848"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>