<?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>127236</bug_id>
          
          <creation_ts>2014-01-18 14:27:41 -0800</creation_ts>
          <short_desc>Modernize HTML parser code</short_desc>
          <delta_ts>2014-01-18 14:44:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>969525</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-18 14:27:41 -0800</bug_when>
    <thetext>Modernize HTML parser code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969526</commentid>
    <comment_count>1</comment_count>
      <attachid>221571</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-18 14:28:25 -0800</bug_when>
    <thetext>Created attachment 221571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969529</commentid>
    <comment_count>2</comment_count>
      <attachid>221571</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-01-18 14:35:48 -0800</bug_when>
    <thetext>Comment on attachment 221571
Patch

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

r=me

&gt; Source/WebCore/html/parser/CSSPreloadScanner.cpp:214
&gt; -            OwnPtr&lt;PreloadRequest&gt; request = PreloadRequest::create(&quot;css&quot;, url, baseElementURL, CachedResource::CSSStyleSheet);
&gt; +
&gt; +            auto request = std::make_unique&lt;PreloadRequest&gt;(&quot;css&quot;, url, baseElementURL, CachedResource::CSSStyleSheet, String());
&gt;              // FIXME: Should this be including the charset in the preload request?
&gt; -            m_requests-&gt;append(request.release());
&gt; +            m_requests-&gt;append(std::move(request));

I&apos;d lose the temporary.

&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:388
&gt; -            m_insertionPreloadScanner = adoptPtr(new HTMLPreloadScanner(m_options, document()-&gt;url(), document()-&gt;deviceScaleFactor()));
&gt; +            m_insertionPreloadScanner = std::make_unique&lt; HTMLPreloadScanner&gt;(m_options, document()-&gt;url(), document()-&gt;deviceScaleFactor());

Extra space after &lt; here.

&gt; Source/WebCore/html/parser/HTMLResourcePreloader.cpp:66
&gt;  void HTMLResourcePreloader::takeAndPreload(PreloadRequestStream&amp; r)
&gt;  {
&gt; -    PreloadRequestStream requests;
&gt; -    requests.swap(r);
&gt; +    PreloadRequestStream requests = std::move(r);

This is a bit awkward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969530</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-18 14:44:29 -0800</bug_when>
    <thetext>Committed r162275: &lt;http://trac.webkit.org/changeset/162275&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221571</attachid>
            <date>2014-01-18 14:28:25 -0800</date>
            <delta_ts>2014-01-18 14:35:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127236-20140118142824.patch</filename>
            <type>text/plain</type>
            <size>38575</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyMjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTQ2YmI5NzkyNzZmZDZi
MmUyYjc5ZjEyODgyNGU4MDE2ZjcxOWE0Ni4uNDZiNWI3ZDU4ZTBkNmVjODQyMGY4MWNiYmI4MDU4
YjIyYTY0Y2FhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY1IEBACiAyMDE0LTAxLTE4ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgTW9kZXJuaXplIEhU
TUwgcGFyc2VyIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNzIzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogaHRtbC9wYXJzZXIvQXRvbWljSFRNTFRva2VuLmg6CisgICAgICAgICogaHRtbC9w
YXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJlbG9h
ZFNjYW5uZXI6OmVtaXRSdWxlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQ
YXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9j
dW1lbnRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpkZXRh
Y2gpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpzdG9wUGFyc2luZyk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjppbnNlcnQpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTERvY3VtZW50UGFyc2VyOjpyZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24pOgor
ICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVs
ZW1lbnRTdGFjazo6RWxlbWVudFJlY29yZDo6RWxlbWVudFJlY29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRWxlbWVudFN0YWNrOjppbnNlcnRBYm92ZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRWxlbWVudFN0YWNrOjpwdXNoQ29tbW9uKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1M
RWxlbWVudFN0YWNrLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudFN0YWNrOjpFbGVt
ZW50UmVjb3JkOjpyZWxlYXNlTmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudFN0
YWNrOjpFbGVtZW50UmVjb3JkOjpzZXROZXh0KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1M
TWV0YUNoYXJzZXRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGFDaGFyc2V0
UGFyc2VyOjpIVE1MTWV0YUNoYXJzZXRQYXJzZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxNZXRhQ2hhcnNldFBhcnNlci5oOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJT
Y2hlZHVsZXIuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRUYWdTY2FubmVy
OjpjcmVhdGVQcmVsb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpUb2tlblByZWxvYWRT
Y2FubmVyOjpzY2FuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcmVsb2FkU2Nhbm5lcjo6SFRN
TFByZWxvYWRTY2FubmVyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5u
ZXIuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFJlc291cmNlUHJlbG9hZGVyOjp0YWtlQW5kUHJlbG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MUmVzb3VyY2VQcmVsb2FkZXI6OnByZWxvYWQpOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6UHJlbG9hZFJlcXVlc3Q6OlByZWxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBodG1sL3Bh
cnNlci9IVE1MU2NyaXB0UnVubmVyLmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRva2Vu
Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmJlZ2luRE9DVFlQRSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVG9rZW46OnJlbGVhc2VEb2N0eXBlRGF0YSk6CisgICAgICAgICogaHRt
bC9wYXJzZXIvSFRNTFRva2VuaXplci5oOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVl
QnVpbGRlci5oOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3U291cmNlUGFyc2VyOjpIVE1MVmlld1NvdXJj
ZVBhcnNlcik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFZpZXdTb3VyY2VQYXJzZXIuaDoK
KyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlhTU0F1ZGl0b3I6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVy
VG9rZW4pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaDoKKyAgICAgICAgKiBo
dG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlhTU0lu
Zm86OlhTU0luZm8pOgorICAgICAgICAqIGxvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRSZXNvdXJjZURlY29kZXI6OmNoZWNrRm9ySGVhZENoYXJz
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6Y2hlY2tGb3JNZXRh
Q2hhcnNldCk6CisgICAgICAgICogbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuaDoKKworMjAx
NC0wMS0xOCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCiAgICAgICAg
IFJlbW92ZSBzdXBwb3J0IGZvciB0aGUgdmlld3NvdXJjZSBhdHRyaWJ1dGUKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzIzMgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9BdG9taWNIVE1MVG9rZW4uaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oCmluZGV4IDk3NDAwMTEwNDFlYTg2
MGYzYTY0Y2Q5ZjA5Y2QxM2NlYzI0ZDg4ZjMuLjkwOTQ4N2M1NDk0NjJmNGU4ZjBmZjdiYzVlODZl
ZTIyYmY3MTJmNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21p
Y0hUTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21pY0hUTUxU
b2tlbi5oCkBAIC0yMDIsNyArMjAyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNBbGw4Qml0
RGF0YTsKIAogICAgIC8vIEZvciBET0NUWVBFCi0gICAgT3duUHRyPERvY3R5cGVEYXRhPiBtX2Rv
Y3R5cGVEYXRhOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEb2N0eXBlRGF0YT4gbV9kb2N0eXBlRGF0
YTsKIAogICAgIC8vIEZvciBTdGFydFRhZyBhbmQgRW5kVGFnCiAgICAgYm9vbCBtX3NlbGZDbG9z
aW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNj
YW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIu
Y3BwCmluZGV4IDc0ZjgzMmE1MTI2ZmU0MDMxOTUzM2JlMmJhOWNlYmVhYmQ3ZDg5OWQuLmZiMTI0
YzI1ODkwMzRmMTg4MjEwZTI1MGZiOTY1YTdmMWI5NzM4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTIwOCw5ICsyMDgsMTAg
QEAgdm9pZCBDU1NQcmVsb2FkU2Nhbm5lcjo6ZW1pdFJ1bGUoKQogICAgICAgICBTdHJpbmcgdXJs
ID0gcGFyc2VDU1NTdHJpbmdPclVSTChtX3J1bGVWYWx1ZS5kYXRhKCksIG1fcnVsZVZhbHVlLnNp
emUoKSk7CiAgICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgVVJMIGJh
c2VFbGVtZW50VVJMOyAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcGFzc2VkIGluIGZyb20gdGhl
IEhUTUxQcmVsb2FkU2NhbmVyIHZpYSBzY2FuKCkhCi0gICAgICAgICAgICBPd25QdHI8UHJlbG9h
ZFJlcXVlc3Q+IHJlcXVlc3QgPSBQcmVsb2FkUmVxdWVzdDo6Y3JlYXRlKCJjc3MiLCB1cmwsIGJh
c2VFbGVtZW50VVJMLCBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldCk7CisKKyAgICAgICAg
ICAgIGF1dG8gcmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8UHJlbG9hZFJlcXVlc3Q+KCJjc3Mi
LCB1cmwsIGJhc2VFbGVtZW50VVJMLCBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldCwgU3Ry
aW5nKCkpOwogICAgICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGJlIGluY2x1ZGluZyB0
aGUgY2hhcnNldCBpbiB0aGUgcHJlbG9hZCByZXF1ZXN0PwotICAgICAgICAgICAgbV9yZXF1ZXN0
cy0+YXBwZW5kKHJlcXVlc3QucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIG1fcmVxdWVzdHMtPmFw
cGVuZChzdGQ6Om1vdmUocmVxdWVzdCkpOwogICAgICAgICB9CiAgICAgICAgIG1fc3RhdGUgPSBJ
bml0aWFsOwogICAgIH0gZWxzZSBpZiAocnVsZUVxdWFsSWdub3JpbmdDYXNlKG1fcnVsZSwgImNo
YXJzZXQiKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1
bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQ
YXJzZXIuY3BwCmluZGV4IDUyYjUzZjFjYTFkZWZmOGVjNTczNzgxOGY4YzNiNTMxM2YwNDY1MmYu
LjMzYjNhZTkxZWZiOTA0ZDE4Zjg0Y2YzMDVlMGNlNmU3MjliZTkyYjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtNzAsMTMg
KzcwLDEzIEBAIHN0YXRpYyBIVE1MVG9rZW5pemVyOjpTdGF0ZSB0b2tlbml6ZXJTdGF0ZUZvckNv
bnRleHRFbGVtZW50KEVsZW1lbnQqIGNvbnRleHRFbGVtCiBIVE1MRG9jdW1lbnRQYXJzZXI6OkhU
TUxEb2N1bWVudFBhcnNlcihIVE1MRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogU2NyaXB0YWJs
ZURvY3VtZW50UGFyc2VyKGRvY3VtZW50KQogICAgICwgbV9vcHRpb25zKGRvY3VtZW50KQotICAg
ICwgbV90b2tlbihhZG9wdFB0cihuZXcgSFRNTFRva2VuKSkKLSAgICAsIG1fdG9rZW5pemVyKEhU
TUxUb2tlbml6ZXI6OmNyZWF0ZShtX29wdGlvbnMpKQotICAgICwgbV9zY3JpcHRSdW5uZXIoSFRN
TFNjcmlwdFJ1bm5lcjo6Y3JlYXRlKGRvY3VtZW50LCAqdGhpcykpCi0gICAgLCBtX3RyZWVCdWls
ZGVyKEhUTUxUcmVlQnVpbGRlcjo6Y3JlYXRlKCp0aGlzLCBkb2N1bWVudCwgcGFyc2VyQ29udGVu
dFBvbGljeSgpLCBtX29wdGlvbnMpKQotICAgICwgbV9wYXJzZXJTY2hlZHVsZXIoSFRNTFBhcnNl
clNjaGVkdWxlcjo6Y3JlYXRlKCp0aGlzKSkKKyAgICAsIG1fdG9rZW4oc3RkOjptYWtlX3VuaXF1
ZTxIVE1MVG9rZW4+KCkpCisgICAgLCBtX3Rva2VuaXplcihzdGQ6Om1ha2VfdW5pcXVlPEhUTUxU
b2tlbml6ZXI+KG1fb3B0aW9ucykpCisgICAgLCBtX3NjcmlwdFJ1bm5lcihzdGQ6Om1ha2VfdW5p
cXVlPEhUTUxTY3JpcHRSdW5uZXI+KGRvY3VtZW50LCBzdGF0aWNfY2FzdDxIVE1MU2NyaXB0UnVu
bmVySG9zdCY+KCp0aGlzKSkpCisgICAgLCBtX3RyZWVCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8
SFRNTFRyZWVCdWlsZGVyPigqdGhpcywgZG9jdW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3koKSwg
bV9vcHRpb25zKSkKKyAgICAsIG1fcGFyc2VyU2NoZWR1bGVyKHN0ZDo6bWFrZV91bmlxdWU8SFRN
TFBhcnNlclNjaGVkdWxlcj4oKnRoaXMpKQogICAgICwgbV94c3NBdWRpdG9yRGVsZWdhdGUoZG9j
dW1lbnQpCi0gICAgLCBtX3ByZWxvYWRlcihhZG9wdFB0cihuZXcgSFRNTFJlc291cmNlUHJlbG9h
ZGVyKGRvY3VtZW50KSkpCisgICAgLCBtX3ByZWxvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPEhUTUxS
ZXNvdXJjZVByZWxvYWRlcj4oZG9jdW1lbnQpKQogICAgICwgbV9lbmRXYXNEZWxheWVkKGZhbHNl
KQogICAgICwgbV9oYXZlQmFja2dyb3VuZFBhcnNlcihmYWxzZSkKICAgICAsIG1fcHVtcFNlc3Np
b25OZXN0aW5nTGV2ZWwoMCkKQEAgLTkwLDkgKzkwLDkgQEAgSFRNTERvY3VtZW50UGFyc2VyOjpI
VE1MRG9jdW1lbnRQYXJzZXIoSFRNTERvY3VtZW50JiBkb2N1bWVudCkKIEhUTUxEb2N1bWVudFBh
cnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBFbGVt
ZW50KiBjb250ZXh0RWxlbWVudCwgUGFyc2VyQ29udGVudFBvbGljeSBwYXJzZXJDb250ZW50UG9s
aWN5KQogICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGZyYWdtZW50LmRvY3VtZW50KCks
IHBhcnNlckNvbnRlbnRQb2xpY3kpCiAgICAgLCBtX29wdGlvbnMoZnJhZ21lbnQuZG9jdW1lbnQo
KSkKLSAgICAsIG1fdG9rZW4oYWRvcHRQdHIobmV3IEhUTUxUb2tlbikpCi0gICAgLCBtX3Rva2Vu
aXplcihIVE1MVG9rZW5pemVyOjpjcmVhdGUobV9vcHRpb25zKSkKLSAgICAsIG1fdHJlZUJ1aWxk
ZXIoSFRNTFRyZWVCdWlsZGVyOjpjcmVhdGUoKnRoaXMsIGZyYWdtZW50LCBjb250ZXh0RWxlbWVu
dCwgdGhpcy0+cGFyc2VyQ29udGVudFBvbGljeSgpLCBtX29wdGlvbnMpKQorICAgICwgbV90b2tl
bihzdGQ6Om1ha2VfdW5pcXVlPEhUTUxUb2tlbj4oKSkKKyAgICAsIG1fdG9rZW5pemVyKHN0ZDo6
bWFrZV91bmlxdWU8SFRNTFRva2VuaXplcj4obV9vcHRpb25zKSkKKyAgICAsIG1fdHJlZUJ1aWxk
ZXIoc3RkOjptYWtlX3VuaXF1ZTxIVE1MVHJlZUJ1aWxkZXI+KCp0aGlzLCBmcmFnbWVudCwgY29u
dGV4dEVsZW1lbnQsIHRoaXMtPnBhcnNlckNvbnRlbnRQb2xpY3koKSwgbV9vcHRpb25zKSkKICAg
ICAsIG1feHNzQXVkaXRvckRlbGVnYXRlKGZyYWdtZW50LmRvY3VtZW50KCkpCiAgICAgLCBtX2Vu
ZFdhc0RlbGF5ZWQoZmFsc2UpCiAgICAgLCBtX2hhdmVCYWNrZ3JvdW5kUGFyc2VyKGZhbHNlKQpA
QCAtMTIxLDE1ICsxMjEsMTUgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmRldGFjaCgpCiAg
ICAgbV90cmVlQnVpbGRlci0+ZGV0YWNoKCk7CiAgICAgLy8gRklYTUU6IEl0IHNlZW1zIHdyb25n
IHRoYXQgd2Ugd291bGQgaGF2ZSBhIHByZWxvYWQgc2Nhbm5lciBoZXJlLgogICAgIC8vIFlldCBk
dXJpbmcgZmFzdC9kb20vSFRNTFNjcmlwdEVsZW1lbnQvc2NyaXB0LWxvYWQtZXZlbnRzLmh0bWwg
d2UgZG8uCi0gICAgbV9wcmVsb2FkU2Nhbm5lci5jbGVhcigpOwotICAgIG1faW5zZXJ0aW9uUHJl
bG9hZFNjYW5uZXIuY2xlYXIoKTsKLSAgICBtX3BhcnNlclNjaGVkdWxlci5jbGVhcigpOyAvLyBE
ZWxldGluZyB0aGUgc2NoZWR1bGVyIHdpbGwgY2xlYXIgYW55IHRpbWVycy4KKyAgICBtX3ByZWxv
YWRTY2FubmVyID0gbnVsbHB0cjsKKyAgICBtX2luc2VydGlvblByZWxvYWRTY2FubmVyID0gbnVs
bHB0cjsKKyAgICBtX3BhcnNlclNjaGVkdWxlciA9IG51bGxwdHI7IC8vIERlbGV0aW5nIHRoZSBz
Y2hlZHVsZXIgd2lsbCBjbGVhciBhbnkgdGltZXJzLgogfQogCiB2b2lkIEhUTUxEb2N1bWVudFBh
cnNlcjo6c3RvcFBhcnNpbmcoKQogewogICAgIERvY3VtZW50UGFyc2VyOjpzdG9wUGFyc2luZygp
OwotICAgIG1fcGFyc2VyU2NoZWR1bGVyLmNsZWFyKCk7IC8vIERlbGV0aW5nIHRoZSBzY2hlZHVs
ZXIgd2lsbCBjbGVhciBhbnkgdGltZXJzLgorICAgIG1fcGFyc2VyU2NoZWR1bGVyID0gbnVsbHB0
cjsgLy8gRGVsZXRpbmcgdGhlIHNjaGVkdWxlciB3aWxsIGNsZWFyIGFueSB0aW1lcnMuCiB9CiAK
IC8vIFRoaXMga2lja3Mgb2ZmICJPbmNlIHRoZSB1c2VyIGFnZW50IHN0b3BzIHBhcnNpbmciIGFz
IGRlc2NyaWJlZCBieToKQEAgLTMwMiw3ICszMDIsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNl
cjo6cHVtcFRva2VuaXplcihTeW5jaHJvbm91c01vZGUgbW9kZSkKIAogICAgICAgICAgICAgLy8g
V2UgZG8gbm90IFhTUyBmaWx0ZXIgaW5uZXJIVE1MLCB3aGljaCBtZWFucyB3ZSAoaW50ZW50aW9u
YWxseSkgZmFpbAogICAgICAgICAgICAgLy8gaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9y
L2RvbS13cml0ZS1pbm5lckhUTUwuaHRtbAotICAgICAgICAgICAgaWYgKE93blB0cjxYU1NJbmZv
PiB4c3NJbmZvID0gbV94c3NBdWRpdG9yLmZpbHRlclRva2VuKEZpbHRlclRva2VuUmVxdWVzdCh0
b2tlbigpLCBtX3NvdXJjZVRyYWNrZXIsIG1fdG9rZW5pemVyLT5zaG91bGRBbGxvd0NEQVRBKCkp
KSkKKyAgICAgICAgICAgIGlmIChhdXRvIHhzc0luZm8gPSBtX3hzc0F1ZGl0b3IuZmlsdGVyVG9r
ZW4oRmlsdGVyVG9rZW5SZXF1ZXN0KHRva2VuKCksIG1fc291cmNlVHJhY2tlciwgbV90b2tlbml6
ZXItPnNob3VsZEFsbG93Q0RBVEEoKSkpKQogICAgICAgICAgICAgICAgIG1feHNzQXVkaXRvckRl
bGVnYXRlLmRpZEJsb2NrU2NyaXB0KCp4c3NJbmZvKTsKICAgICAgICAgfQogCkBAIC0zMjMsNyAr
MzIzLDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIoU3luY2hyb25v
dXNNb2RlIG1vZGUpCiAgICAgaWYgKGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkgewogICAgICAgICBB
U1NFUlQobV90b2tlbml6ZXItPnN0YXRlKCkgPT0gSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlKTsK
ICAgICAgICAgaWYgKCFtX3ByZWxvYWRTY2FubmVyKSB7Ci0gICAgICAgICAgICBtX3ByZWxvYWRT
Y2FubmVyID0gYWRvcHRQdHIobmV3IEhUTUxQcmVsb2FkU2Nhbm5lcihtX29wdGlvbnMsIGRvY3Vt
ZW50KCktPnVybCgpLCBkb2N1bWVudCgpLT5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CisgICAgICAg
ICAgICBtX3ByZWxvYWRTY2FubmVyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MUHJlbG9hZFNjYW5u
ZXI+KG1fb3B0aW9ucywgZG9jdW1lbnQoKS0+dXJsKCksIGRvY3VtZW50KCktPmRldmljZVNjYWxl
RmFjdG9yKCkpOwogICAgICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lci0+YXBwZW5kVG9FbmQobV9p
bnB1dC5jdXJyZW50KCkpOwogICAgICAgICB9CiAgICAgICAgIG1fcHJlbG9hZFNjYW5uZXItPnNj
YW4obV9wcmVsb2FkZXIuZ2V0KCksIGRvY3VtZW50KCktPmJhc2VFbGVtZW50VVJMKCkpOwpAQCAt
Mzg1LDcgKzM4NSw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjppbnNlcnQoY29uc3QgU2Vn
bWVudGVkU3RyaW5nJiBzb3VyY2UpCiAgICAgICAgIC8vIENoZWNrIHRoZSBkb2N1bWVudC53cml0
ZSgpIG91dHB1dCB3aXRoIGEgc2VwYXJhdGUgcHJlbG9hZCBzY2FubmVyIGFzCiAgICAgICAgIC8v
IHRoZSBtYWluIHNjYW5uZXIgY2FuJ3QgZGVhbCB3aXRoIGluc2VydGlvbnMuCiAgICAgICAgIGlm
ICghbV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5lcikgewotICAgICAgICAgICAgbV9pbnNlcnRpb25Q
cmVsb2FkU2Nhbm5lciA9IGFkb3B0UHRyKG5ldyBIVE1MUHJlbG9hZFNjYW5uZXIobV9vcHRpb25z
LCBkb2N1bWVudCgpLT51cmwoKSwgZG9jdW1lbnQoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSkpOwor
ICAgICAgICAgICAgbV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5lciA9IHN0ZDo6bWFrZV91bmlxdWU8
IEhUTUxQcmVsb2FkU2Nhbm5lcj4obV9vcHRpb25zLCBkb2N1bWVudCgpLT51cmwoKSwgZG9jdW1l
bnQoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgICAgIH0KICAgICAgICAgbV9pbnNlcnRp
b25QcmVsb2FkU2Nhbm5lci0+YXBwZW5kVG9FbmQoc291cmNlKTsKICAgICAgICAgbV9pbnNlcnRp
b25QcmVsb2FkU2Nhbm5lci0+c2NhbihtX3ByZWxvYWRlci5nZXQoKSwgZG9jdW1lbnQoKS0+YmFz
ZUVsZW1lbnRVUkwoKSk7CkBAIC00MDgsNyArNDA4LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJz
ZXI6OmFwcGVuZChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGlucHV0U291cmNlKQogICAgICAgICBp
ZiAobV9pbnB1dC5jdXJyZW50KCkuaXNFbXB0eSgpICYmICFpc1dhaXRpbmdGb3JTY3JpcHRzKCkp
IHsKICAgICAgICAgICAgIC8vIFdlIGhhdmUgcGFyc2VkIHVudGlsIHRoZSBlbmQgb2YgdGhlIGN1
cnJlbnQgaW5wdXQgYW5kIHNvIGFyZSBub3cgbW92aW5nIGFoZWFkIG9mIHRoZSBwcmVsb2FkIHNj
YW5uZXIuCiAgICAgICAgICAgICAvLyBDbGVhciB0aGUgc2Nhbm5lciBzbyB3ZSBrbm93IHRvIHNj
YW4gc3RhcnRpbmcgZnJvbSB0aGUgY3VycmVudCBpbnB1dCBwb2ludCBpZiB3ZSBibG9jayBhZ2Fp
bi4KLSAgICAgICAgICAgIG1fcHJlbG9hZFNjYW5uZXIuY2xlYXIoKTsKKyAgICAgICAgICAgIG1f
cHJlbG9hZFNjYW5uZXIgPSBudWxscHRyOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
bV9wcmVsb2FkU2Nhbm5lci0+YXBwZW5kVG9FbmQoc291cmNlKTsKICAgICAgICAgICAgIGlmIChp
c1dhaXRpbmdGb3JTY3JpcHRzKCkpCkBAIC01MjcsNyArNTI3LDcgQEAgdm9pZCBIVE1MRG9jdW1l
bnRQYXJzZXI6OnJlc3VtZVBhcnNpbmdBZnRlclNjcmlwdEV4ZWN1dGlvbigpCiAgICAgQVNTRVJU
KCFpc0V4ZWN1dGluZ1NjcmlwdCgpKTsKICAgICBBU1NFUlQoIWlzV2FpdGluZ0ZvclNjcmlwdHMo
KSk7CiAKLSAgICBtX2luc2VydGlvblByZWxvYWRTY2FubmVyLmNsZWFyKCk7CisgICAgbV9pbnNl
cnRpb25QcmVsb2FkU2Nhbm5lciA9IG51bGxwdHI7CiAgICAgcHVtcFRva2VuaXplcklmUG9zc2li
bGUoQWxsb3dZaWVsZCk7CiAgICAgZW5kSWZEZWxheWVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCmluZGV4IDFiZDFjNTJiOTY1YTgy
NTYzMzJlZDJiNjU5YWM3ODRjYTdjNzg0NDEuLjg5ZDQ0OTYwZDNlYWYxNzhlOGNlNWNkOTAxNTY4
ODY2NTdhNGJmOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxE
b2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1
bWVudFBhcnNlci5oCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiWFNTQXVkaXRvci5oIgog
I2luY2x1ZGUgIlhTU0F1ZGl0b3JEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgot
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCkBAIC0xNDgsMTkgKzE0NywxOSBAQCBwcml2
YXRlOgogICAgIEhUTUxQYXJzZXJPcHRpb25zIG1fb3B0aW9uczsKICAgICBIVE1MSW5wdXRTdHJl
YW0gbV9pbnB1dDsKIAotICAgIE93blB0cjxIVE1MVG9rZW4+IG1fdG9rZW47Ci0gICAgT3duUHRy
PEhUTUxUb2tlbml6ZXI+IG1fdG9rZW5pemVyOwotICAgIE93blB0cjxIVE1MU2NyaXB0UnVubmVy
PiBtX3NjcmlwdFJ1bm5lcjsKLSAgICBPd25QdHI8SFRNTFRyZWVCdWlsZGVyPiBtX3RyZWVCdWls
ZGVyOwotICAgIE93blB0cjxIVE1MUHJlbG9hZFNjYW5uZXI+IG1fcHJlbG9hZFNjYW5uZXI7Ci0g
ICAgT3duUHRyPEhUTUxQcmVsb2FkU2Nhbm5lcj4gbV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5lcjsK
LSAgICBPd25QdHI8SFRNTFBhcnNlclNjaGVkdWxlcj4gbV9wYXJzZXJTY2hlZHVsZXI7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEhUTUxUb2tlbj4gbV90b2tlbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
SFRNTFRva2VuaXplcj4gbV90b2tlbml6ZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEhUTUxTY3Jp
cHRSdW5uZXI+IG1fc2NyaXB0UnVubmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxIVE1MVHJlZUJ1
aWxkZXI+IG1fdHJlZUJ1aWxkZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEhUTUxQcmVsb2FkU2Nh
bm5lcj4gbV9wcmVsb2FkU2Nhbm5lcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SFRNTFByZWxvYWRT
Y2FubmVyPiBtX2luc2VydGlvblByZWxvYWRTY2FubmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxI
VE1MUGFyc2VyU2NoZWR1bGVyPiBtX3BhcnNlclNjaGVkdWxlcjsKICAgICBIVE1MU291cmNlVHJh
Y2tlciBtX3NvdXJjZVRyYWNrZXI7CiAgICAgVGV4dFBvc2l0aW9uIG1fdGV4dFBvc2l0aW9uOwog
ICAgIFhTU0F1ZGl0b3IgbV94c3NBdWRpdG9yOwogICAgIFhTU0F1ZGl0b3JEZWxlZ2F0ZSBtX3hz
c0F1ZGl0b3JEZWxlZ2F0ZTsKIAotICAgIE93blB0cjxIVE1MUmVzb3VyY2VQcmVsb2FkZXI+IG1f
cHJlbG9hZGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxIVE1MUmVzb3VyY2VQcmVsb2FkZXI+IG1f
cHJlbG9hZGVyOwogCiAgICAgYm9vbCBtX2VuZFdhc0RlbGF5ZWQ7CiAgICAgYm9vbCBtX2hhdmVC
YWNrZ3JvdW5kUGFyc2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTEVsZW1lbnRTdGFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxl
bWVudFN0YWNrLmNwcAppbmRleCBiNWJiYzIzMDdiOTFkMGY5NTkxYTlhZWE2MTE2MGM0MTBhMDE4
NDE4Li4yYWFmNmRiOTJhY2U3NDQxZjdiYmE0NzY1YjA3MDlkMDIxZmIzZTAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcApAQCAtMTI1LDcg
KzEyNSw3IEBAIGlubGluZSBib29sIGlzU2VsZWN0U2NvcGVNYXJrZXIoSFRNTFN0YWNrSXRlbSog
aXRlbSkKIAogfQogCi1IVE1MRWxlbWVudFN0YWNrOjpFbGVtZW50UmVjb3JkOjpFbGVtZW50UmVj
b3JkKFBhc3NSZWZQdHI8SFRNTFN0YWNrSXRlbT4gaXRlbSwgT3duUHRyPEVsZW1lbnRSZWNvcmQ+
IG5leHQpCitIVE1MRWxlbWVudFN0YWNrOjpFbGVtZW50UmVjb3JkOjpFbGVtZW50UmVjb3JkKFBh
c3NSZWZQdHI8SFRNTFN0YWNrSXRlbT4gaXRlbSwgc3RkOjp1bmlxdWVfcHRyPEVsZW1lbnRSZWNv
cmQ+IG5leHQpCiAgICAgOiBtX2l0ZW0oaXRlbSkKICAgICAsIG1fbmV4dChzdGQ6Om1vdmUobmV4
dCkpCiB7CkBAIC0zNTksNyArMzU5LDcgQEAgdm9pZCBIVE1MRWxlbWVudFN0YWNrOjppbnNlcnRB
Ym92ZShQYXNzUmVmUHRyPEhUTUxTdGFja0l0ZW0+IGl0ZW0sIEVsZW1lbnRSZWNvcmQKICAgICBB
U1NFUlQoIWl0ZW0tPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpoZWFkVGFnKSk7CiAgICAgQVNTRVJU
KCFpdGVtLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Ym9keVRhZykpOwogICAgIEFTU0VSVChtX3Jv
b3ROb2RlKTsKLSAgICBpZiAocmVjb3JkQmVsb3cgPT0gbV90b3ApIHsKKyAgICBpZiAocmVjb3Jk
QmVsb3cgPT0gbV90b3AuZ2V0KCkpIHsKICAgICAgICAgcHVzaChpdGVtKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTM2OSw3ICszNjksNyBAQCB2b2lkIEhUTUxFbGVtZW50U3RhY2s6Omlu
c2VydEFib3ZlKFBhc3NSZWZQdHI8SFRNTFN0YWNrSXRlbT4gaXRlbSwgRWxlbWVudFJlY29yZAog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgbV9zdGFja0RlcHRoKys7Ci0gICAgICAg
IHJlY29yZEFib3ZlLT5zZXROZXh0KGFkb3B0UHRyKG5ldyBFbGVtZW50UmVjb3JkKGl0ZW0sIHJl
Y29yZEFib3ZlLT5yZWxlYXNlTmV4dCgpKSkpOworICAgICAgICByZWNvcmRBYm92ZS0+c2V0TmV4
dChzdGQ6Om1ha2VfdW5pcXVlPEVsZW1lbnRSZWNvcmQ+KGl0ZW0sIHJlY29yZEFib3ZlLT5yZWxl
YXNlTmV4dCgpKSk7CiAgICAgICAgIHJlY29yZEFib3ZlLT5uZXh0KCktPmVsZW1lbnQoKS0+YmVn
aW5QYXJzaW5nQ2hpbGRyZW4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTU2Nyw3ICs1
NjcsNyBAQCB2b2lkIEhUTUxFbGVtZW50U3RhY2s6OnB1c2hDb21tb24oUGFzc1JlZlB0cjxIVE1M
U3RhY2tJdGVtPiBpdGVtKQogICAgIEFTU0VSVChtX3Jvb3ROb2RlKTsKIAogICAgIG1fc3RhY2tE
ZXB0aCsrOwotICAgIG1fdG9wID0gYWRvcHRQdHIobmV3IEVsZW1lbnRSZWNvcmQoaXRlbSwgbV90
b3AucmVsZWFzZSgpKSk7CisgICAgbV90b3AgPSBzdGQ6Om1ha2VfdW5pcXVlPEVsZW1lbnRSZWNv
cmQ+KGl0ZW0sIHN0ZDo6bW92ZShtX3RvcCkpOwogfQogCiB2b2lkIEhUTUxFbGVtZW50U3RhY2s6
OnBvcENvbW1vbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
RWxlbWVudFN0YWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0
YWNrLmgKaW5kZXggNmQ4MTU3MjYwZDcyMjY0ZWUyNjVhZmQxNmVlZDY0ZDU1Y2FlODE0YS4uYTJj
NGY1NGRlYjA1MDFmNDYwY2YyNzkzOGM5Y2ZlNjc0YjdkMTk3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suaApAQCAtMzAsOCArMzAsNiBAQAogI2lu
Y2x1ZGUgIkhUTUxTdGFja0l0ZW0uaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNTIsNyArNTAsOCBAQCBwdWJsaWM6CiAgICAgY2xhc3MgRWxlbWVudFJl
Y29yZCB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEVsZW1lbnRSZWNvcmQpOyBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6Ci0gICAgICAgIH5FbGVtZW50UmVjb3Jk
KCk7IC8vIFB1YmxpYyBmb3IgflBhc3NPd25QdHIoKQorICAgICAgICBFbGVtZW50UmVjb3JkKFBh
c3NSZWZQdHI8SFRNTFN0YWNrSXRlbT4sIHN0ZDo6dW5pcXVlX3B0cjxFbGVtZW50UmVjb3JkPik7
CisgICAgICAgIH5FbGVtZW50UmVjb3JkKCk7CiAgICAgCiAgICAgICAgIEVsZW1lbnQqIGVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiBtX2l0ZW0tPmVsZW1lbnQoKTsgfQogICAgICAgICBDb250YWlu
ZXJOb2RlKiBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtLT5ub2RlKCk7IH0KQEAgLTY2LDEz
ICs2NSwxMSBAQCBwdWJsaWM6CiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIEhU
TUxFbGVtZW50U3RhY2s7CiAKLSAgICAgICAgRWxlbWVudFJlY29yZChQYXNzUmVmUHRyPEhUTUxT
dGFja0l0ZW0+LCBPd25QdHI8RWxlbWVudFJlY29yZD4pOwotCi0gICAgICAgIE93blB0cjxFbGVt
ZW50UmVjb3JkPiByZWxlYXNlTmV4dCgpIHsgcmV0dXJuIG1fbmV4dC5yZWxlYXNlKCk7IH0KLSAg
ICAgICAgdm9pZCBzZXROZXh0KE93blB0cjxFbGVtZW50UmVjb3JkPiBuZXh0KSB7IG1fbmV4dCA9
IHN0ZDo6bW92ZShuZXh0KTsgfQorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RWxlbWVudFJlY29y
ZD4gcmVsZWFzZU5leHQoKSB7IHJldHVybiBzdGQ6Om1vdmUobV9uZXh0KTsgfQorICAgICAgICB2
b2lkIHNldE5leHQoc3RkOjp1bmlxdWVfcHRyPEVsZW1lbnRSZWNvcmQ+IG5leHQpIHsgbV9uZXh0
ID0gc3RkOjptb3ZlKG5leHQpOyB9CiAKICAgICAgICAgUmVmUHRyPEhUTUxTdGFja0l0ZW0+IG1f
aXRlbTsKLSAgICAgICAgT3duUHRyPEVsZW1lbnRSZWNvcmQ+IG1fbmV4dDsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEVsZW1lbnRSZWNvcmQ+IG1fbmV4dDsKICAgICB9OwogCiAgICAgdW5zaWdu
ZWQgc3RhY2tEZXB0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhY2tEZXB0aDsgfQpAQCAtMTcxLDcg
KzE2OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwb3BDb21tb24oKTsKICAgICB2b2lkIHJlbW92
ZU5vblRvcENvbW1vbihFbGVtZW50Kik7CiAKLSAgICBPd25QdHI8RWxlbWVudFJlY29yZD4gbV90
b3A7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVsZW1lbnRSZWNvcmQ+IG1fdG9wOwogCiAgICAgLy8g
V2UgcmVtZW1iZXIgdGhlIHJvb3Qgbm9kZSwgPGhlYWQ+IGFuZCA8Ym9keT4gYXMgdGhleSBhcmUg
cHVzaGVkLiBUaGVpcgogICAgIC8vIEVsZW1lbnRSZWNvcmRzIGtlZXAgdGhlbSBhbGl2ZS4gVGhl
IHJvb3Qgbm9kZSBpcyBuZXZlciBwb3BwZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcAppbmRleCAwYmIzZjU1ZGE2NmVmNjgx
NWEzNGM3MTU4ZmZjNDFhYWM1N2ZlYzBhLi4xMWUxNGE0NmUxNmUzZjQxZDQwY2QzM2Y4MDAyMjVi
ZjBiNmE2YmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0
YUNoYXJzZXRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxN
ZXRhQ2hhcnNldFBhcnNlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogSFRNTE1ldGFDaGFyc2V0UGFyc2VyOjpI
VE1MTWV0YUNoYXJzZXRQYXJzZXIoKQotICAgIDogbV90b2tlbml6ZXIoSFRNTFRva2VuaXplcjo6
Y3JlYXRlKEhUTUxQYXJzZXJPcHRpb25zKCkpKQorICAgIDogbV90b2tlbml6ZXIoc3RkOjptYWtl
X3VuaXF1ZTxIVE1MVG9rZW5pemVyPihIVE1MUGFyc2VyT3B0aW9ucygpKSkKICAgICAsIG1fYXNz
dW1lZENvZGVjKG5ld1RleHRDb2RlYyhMYXRpbjFFbmNvZGluZygpKSkKICAgICAsIG1faW5IZWFk
U2VjdGlvbih0cnVlKQogICAgICwgbV9kb25lQ2hlY2tpbmcoZmFsc2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5oCmluZGV4IGJkNjZl
MzQ0ZTU3ZTcxNDRmZWY3YWI4MDgwZTUwYjI5ZWI1MmZkOWIuLjYxOGNlN2ZmNjFkMWRkMGY1ZTNm
ZjBlMzVlMjAzMmIyZTdhM2FjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5oCkBAIC0zOSw4ICszOSw3IEBAIGNsYXNzIFRleHRD
b2RlYzsKIGNsYXNzIEhUTUxNZXRhQ2hhcnNldFBhcnNlciB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoSFRNTE1ldGFDaGFyc2V0UGFyc2VyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIE93blB0cjxIVE1MTWV0YUNoYXJzZXRQYXJzZXI+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBIVE1MTWV0YUNoYXJzZXRQYXJzZXIoKSk7IH0KLQorICAg
IEhUTUxNZXRhQ2hhcnNldFBhcnNlcigpOwogICAgIH5IVE1MTWV0YUNoYXJzZXRQYXJzZXIoKTsK
IAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBkb25lIGNoZWNraW5nLCByZWdhcmRsZXNzIHdoZXRo
ZXIgYW4gZW5jb2RpbmcgaXMgZm91bmQuCkBAIC01NCw4ICs1Myw2IEBAIHB1YmxpYzoKICk7CiAK
IHByaXZhdGU6Ci0gICAgSFRNTE1ldGFDaGFyc2V0UGFyc2VyKCk7Ci0KICAgICBib29sIHByb2Nl
c3NNZXRhKCk7CiAgICAgc3RhdGljIFN0cmluZyBleHRyYWN0Q2hhcnNldChjb25zdCBTdHJpbmcm
KTsKIApAQCAtNjUsNyArNjIsNyBAQCBwcml2YXRlOgogICAgICAgICBQcmFnbWEsCiAgICAgfTsK
IAotICAgIE93blB0cjxIVE1MVG9rZW5pemVyPiBtX3Rva2VuaXplcjsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8SFRNTFRva2VuaXplcj4gbV90b2tlbml6ZXI7CiAgICAgT3duUHRyPFRleHRDb2RlYz4g
bV9hc3N1bWVkQ29kZWM7CiAgICAgU2VnbWVudGVkU3RyaW5nIG1faW5wdXQ7CiAgICAgSFRNTFRv
a2VuIG1fdG9rZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VyU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2Vy
U2NoZWR1bGVyLmgKaW5kZXggYTkzNTk2YmRmYzUyMTRlNWJiYTY3YzQ4ZGI5ZWM1ZWM5ZmVjNmNm
Yy4uODYyYmI2MmE0NDQ4NjYwN2ZkMzA2NDIzNTYwZjJkZTVkMDdlYTQzYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuaApAQCAtNjQsMTAg
KzY0LDcgQEAgcHVibGljOgogY2xhc3MgSFRNTFBhcnNlclNjaGVkdWxlciB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoSFRNTFBhcnNlclNjaGVkdWxlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIHN0YXRpYyBPd25QdHI8SFRNTFBhcnNlclNjaGVkdWxlcj4gY3Jl
YXRlKEhUTUxEb2N1bWVudFBhcnNlciYgcGFyc2VyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBIVE1MUGFyc2VyU2NoZWR1bGVyKHBhcnNlcikpOwotICAgIH0KKyAgICBleHBs
aWNpdCBIVE1MUGFyc2VyU2NoZWR1bGVyKEhUTUxEb2N1bWVudFBhcnNlciYpOwogICAgIH5IVE1M
UGFyc2VyU2NoZWR1bGVyKCk7CiAKICAgICAvLyBJbmxpbmUgYXMgdGhpcyBpcyBjYWxsZWQgYWZ0
ZXIgZXZlcnkgdG9rZW4gaW4gdGhlIHBhcnNlci4KQEAgLTEwMSw4ICs5OCw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlc3VtZSgpOwogCiBwcml2YXRlOgotICAgIEhUTUxQYXJzZXJTY2hlZHVsZXIo
SFRNTERvY3VtZW50UGFyc2VyJik7Ci0KICAgICB2b2lkIGNvbnRpbnVlTmV4dENodW5rVGltZXJG
aXJlZChUaW1lcjxIVE1MUGFyc2VyU2NoZWR1bGVyPiYpOwogCiAgICAgSFRNTERvY3VtZW50UGFy
c2VyJiBtX3BhcnNlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxQcmVsb2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJl
bG9hZFNjYW5uZXIuY3BwCmluZGV4IDI4Y2FhNjlkNDcwNzcwZmJlNTE3NGZhNjg3N2IzMWU4YmJi
ZWFkZmEuLmM4OTM3YTVmZmYzOGMyMDEyMjI2ZDJmODZlNjkzZjg4N2E4MzU2ZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApAQCAt
MTA5LDE1ICsxMDksMTYgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgT3duUHRy
PFByZWxvYWRSZXF1ZXN0PiBjcmVhdGVQcmVsb2FkUmVxdWVzdChjb25zdCBVUkwmIHByZWRpY3Rl
ZEJhc2VVUkwpCisgICAgc3RkOjp1bmlxdWVfcHRyPFByZWxvYWRSZXF1ZXN0PiBjcmVhdGVQcmVs
b2FkUmVxdWVzdChjb25zdCBVUkwmIHByZWRpY3RlZEJhc2VVUkwpCiAgICAgewogICAgICAgICBp
ZiAoIXNob3VsZFByZWxvYWQoKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
ICAgIE93blB0cjxQcmVsb2FkUmVxdWVzdD4gcmVxdWVzdCA9IFByZWxvYWRSZXF1ZXN0OjpjcmVh
dGUoaW5pdGlhdG9yRm9yKG1fdGFnSWQpLCBtX3VybFRvTG9hZCwgcHJlZGljdGVkQmFzZVVSTCwg
cmVzb3VyY2VUeXBlKCksIG1fbWVkaWFBdHRyaWJ1dGUpOworICAgICAgICBhdXRvIHJlcXVlc3Qg
PSBzdGQ6Om1ha2VfdW5pcXVlPFByZWxvYWRSZXF1ZXN0Pihpbml0aWF0b3JGb3IobV90YWdJZCks
IG1fdXJsVG9Mb2FkLCBwcmVkaWN0ZWRCYXNlVVJMLCByZXNvdXJjZVR5cGUoKSwgbV9tZWRpYUF0
dHJpYnV0ZSk7CisKICAgICAgICAgcmVxdWVzdC0+c2V0Q3Jvc3NPcmlnaW5Nb2RlQWxsb3dzQ29v
a2llcyhjcm9zc09yaWdpbk1vZGVBbGxvd3NDb29raWVzKCkpOwogICAgICAgICByZXF1ZXN0LT5z
ZXRDaGFyc2V0KGNoYXJzZXQoKSk7Ci0gICAgICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsK
KyAgICAgICAgcmV0dXJuIHJlcXVlc3Q7CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wgbWF0Y2go
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKQEAg
LTI2MSw3ICsyNjIsNyBAQCB2b2lkIFRva2VuUHJlbG9hZFNjYW5uZXI6OnJld2luZFRvKFRva2Vu
UHJlbG9hZFNjYW5uZXJDaGVja3BvaW50IGNoZWNrcG9pbnRJbmRleAogICAgIG1fY2hlY2twb2lu
dHMuY2xlYXIoKTsKIH0KIAotdm9pZCBUb2tlblByZWxvYWRTY2FubmVyOjpzY2FuKGNvbnN0IEhU
TUxUb2tlbiYgdG9rZW4sIFZlY3RvcjxPd25QdHI8UHJlbG9hZFJlcXVlc3Q+PiYgcmVxdWVzdHMp
Cit2b2lkIFRva2VuUHJlbG9hZFNjYW5uZXI6OnNjYW4oY29uc3QgSFRNTFRva2VuJiB0b2tlbiwg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxQcmVsb2FkUmVxdWVzdD4+JiByZXF1ZXN0cykKIHsKICAg
ICBzd2l0Y2ggKHRva2VuLnR5cGUoKSkgewogICAgIGNhc2UgSFRNTFRva2VuOjpDaGFyYWN0ZXI6
CkBAIC0zMTMsOCArMzE0LDggQEAgdm9pZCBUb2tlblByZWxvYWRTY2FubmVyOjpzY2FuKGNvbnN0
IEhUTUxUb2tlbiYgdG9rZW4sIFZlY3RvcjxPd25QdHI8UHJlbG9hZFJlcXUKIAogICAgICAgICBT
dGFydFRhZ1NjYW5uZXIgc2Nhbm5lcih0YWdJZCwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAg
ICAgIHNjYW5uZXIucHJvY2Vzc0F0dHJpYnV0ZXModG9rZW4uYXR0cmlidXRlcygpKTsKLSAgICAg
ICAgaWYgKE93blB0cjxQcmVsb2FkUmVxdWVzdD4gcmVxdWVzdCA9IHNjYW5uZXIuY3JlYXRlUHJl
bG9hZFJlcXVlc3QobV9wcmVkaWN0ZWRCYXNlRWxlbWVudFVSTCkpCi0gICAgICAgICAgICByZXF1
ZXN0cy5hcHBlbmQocmVxdWVzdC5yZWxlYXNlKCkpOworICAgICAgICBpZiAoYXV0byByZXF1ZXN0
ID0gc2Nhbm5lci5jcmVhdGVQcmVsb2FkUmVxdWVzdChtX3ByZWRpY3RlZEJhc2VFbGVtZW50VVJM
KSkKKyAgICAgICAgICAgIHJlcXVlc3RzLmFwcGVuZChzdGQ6Om1vdmUocmVxdWVzdCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMzMsNyArMzM0LDcgQEAgdm9pZCBUb2tlblByZWxv
YWRTY2FubmVyOjp1cGRhdGVQcmVkaWN0ZWRCYXNlVVJMKGNvbnN0IFRva2VuJiB0b2tlbikKIAog
SFRNTFByZWxvYWRTY2FubmVyOjpIVE1MUHJlbG9hZFNjYW5uZXIoY29uc3QgSFRNTFBhcnNlck9w
dGlvbnMmIG9wdGlvbnMsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIGZsb2F0IGRldmljZVNjYWxl
RmFjdG9yKQogICAgIDogbV9zY2FubmVyKGRvY3VtZW50VVJMLCBkZXZpY2VTY2FsZUZhY3RvcikK
LSAgICAsIG1fdG9rZW5pemVyKEhUTUxUb2tlbml6ZXI6OmNyZWF0ZShvcHRpb25zKSkKKyAgICAs
IG1fdG9rZW5pemVyKHN0ZDo6bWFrZV91bmlxdWU8SFRNTFRva2VuaXplcj4ob3B0aW9ucykpCiB7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2Fk
U2Nhbm5lci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVy
LmgKaW5kZXggZmFlZWM4YzBlNzAxNTQ1ZTdiZDdiNDA1MmFjMzE0YTM1NGQ5ZjgzMS4uOTYzYzZi
OTJlNjU5ZTI3NGYyYTU0NzkwMTljNGEyMmEzOWY1OGY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmgKQEAgLTEzMiw3ICsxMzIsNyBAQCBw
cml2YXRlOgogICAgIFRva2VuUHJlbG9hZFNjYW5uZXIgbV9zY2FubmVyOwogICAgIFNlZ21lbnRl
ZFN0cmluZyBtX3NvdXJjZTsKICAgICBIVE1MVG9rZW4gbV90b2tlbjsKLSAgICBPd25QdHI8SFRN
TFRva2VuaXplcj4gbV90b2tlbml6ZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEhUTUxUb2tlbml6
ZXI+IG1fdG9rZW5pemVyOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5jcHAKaW5kZXggNmJjM2ZjOGVkNTUyODFiODA1
MDRkMmRmN2FkNGI4ZTEwOGM3NjYzNi4uZTk0MzZlMmE3MjI4OTNkZTUwOWRlYjk1Y2VkYzdiNTc4
NjZlM2VlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291
cmNlUHJlbG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUmVz
b3VyY2VQcmVsb2FkZXIuY3BwCkBAIC02MywxMSArNjMsMTAgQEAgQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0IFByZWxvYWRSZXF1ZXN0OjpyZXNvdXJjZVJlcXVlc3QoRG9jdW1lbnQmIGRvY3VtZW50KQog
CiB2b2lkIEhUTUxSZXNvdXJjZVByZWxvYWRlcjo6dGFrZUFuZFByZWxvYWQoUHJlbG9hZFJlcXVl
c3RTdHJlYW0mIHIpCiB7Ci0gICAgUHJlbG9hZFJlcXVlc3RTdHJlYW0gcmVxdWVzdHM7Ci0gICAg
cmVxdWVzdHMuc3dhcChyKTsKKyAgICBQcmVsb2FkUmVxdWVzdFN0cmVhbSByZXF1ZXN0cyA9IHN0
ZDo6bW92ZShyKTsKIAotICAgIGZvciAoUHJlbG9hZFJlcXVlc3RTdHJlYW06Oml0ZXJhdG9yIGl0
ID0gcmVxdWVzdHMuYmVnaW4oKTsgaXQgIT0gcmVxdWVzdHMuZW5kKCk7ICsraXQpCi0gICAgICAg
IHByZWxvYWQoaXQtPnJlbGVhc2UoKSk7CisgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogcmVxdWVz
dHMpCisgICAgICAgIHByZWxvYWQoc3RkOjptb3ZlKHJlcXVlc3QpKTsKIH0KIAogc3RhdGljIGJv
b2wgbWVkaWFBdHRyaWJ1dGVNYXRjaGVzKEZyYW1lKiBmcmFtZSwgUmVuZGVyU3R5bGUqIHJlbmRl
clN0eWxlLCBjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKQpAQCAtNzcsNyArNzYsNyBAQCBz
dGF0aWMgYm9vbCBtZWRpYUF0dHJpYnV0ZU1hdGNoZXMoRnJhbWUqIGZyYW1lLCBSZW5kZXJTdHls
ZSogcmVuZGVyU3R5bGUsIGNvbnN0CiAgICAgcmV0dXJuIG1lZGlhUXVlcnlFdmFsdWF0b3IuZXZh
bChtZWRpYVF1ZXJpZXMuZ2V0KCkpOwogfQogCi12b2lkIEhUTUxSZXNvdXJjZVByZWxvYWRlcjo6
cHJlbG9hZChPd25QdHI8UHJlbG9hZFJlcXVlc3Q+IHByZWxvYWQpCit2b2lkIEhUTUxSZXNvdXJj
ZVByZWxvYWRlcjo6cHJlbG9hZChzdGQ6OnVuaXF1ZV9wdHI8UHJlbG9hZFJlcXVlc3Q+IHByZWxv
YWQpCiB7CiAgICAgQVNTRVJUKG1fZG9jdW1lbnQuZnJhbWUoKSk7CiAgICAgQVNTRVJUKG1fZG9j
dW1lbnQucmVuZGVyVmlldygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFJlc291cmNlUHJlbG9hZGVyLmgKaW5kZXggZmZiNjRlNTcwMDYwNzI5YTQyZjQzOWY1MzJm
ZjU2YjY2NjY5ZDVkMC4uMWJmMzU3ZWI2ZDAwMmRmMDk0NDcwNWIxMGQ5YjgxMjAwNDM1ODcyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9h
ZGVyLmgKQEAgLTMzLDE0ICszMywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBy
ZWxvYWRSZXF1ZXN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgT3duUHRyPFByZWxvYWRSZXF1ZXN0
PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBpbml0aWF0b3IsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VV
UkwsIGNvbnN0IFVSTCYgYmFzZVVSTCwgQ2FjaGVkUmVzb3VyY2U6OlR5cGUgcmVzb3VyY2VUeXBl
LCBjb25zdCBTdHJpbmcmIG1lZGlhQXR0cmlidXRlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBQcmVsb2FkUmVxdWVzdChpbml0aWF0b3IsIHJlc291cmNlVVJMLCBiYXNlVVJM
LCByZXNvdXJjZVR5cGUsIG1lZGlhQXR0cmlidXRlKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIE93
blB0cjxQcmVsb2FkUmVxdWVzdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgaW5pdGlhdG9yLCBjb25z
dCBTdHJpbmcmIHJlc291cmNlVVJMLCBjb25zdCBVUkwmIGJhc2VVUkwsIENhY2hlZFJlc291cmNl
OjpUeXBlIHJlc291cmNlVHlwZSkKKyAgICBQcmVsb2FkUmVxdWVzdChjb25zdCBTdHJpbmcmIGlu
aXRpYXRvciwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCwgY29uc3QgVVJMJiBiYXNlVVJMLCBD
YWNoZWRSZXNvdXJjZTo6VHlwZSByZXNvdXJjZVR5cGUsIGNvbnN0IFN0cmluZyYgbWVkaWFBdHRy
aWJ1dGUpCisgICAgICAgIDogbV9pbml0aWF0b3IoaW5pdGlhdG9yKQorICAgICAgICAsIG1fcmVz
b3VyY2VVUkwocmVzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCkpCisgICAgICAgICwgbV9iYXNlVVJM
KGJhc2VVUkwuY29weSgpKQorICAgICAgICAsIG1fcmVzb3VyY2VUeXBlKHJlc291cmNlVHlwZSkK
KyAgICAgICAgLCBtX21lZGlhQXR0cmlidXRlKG1lZGlhQXR0cmlidXRlLmlzb2xhdGVkQ29weSgp
KQorICAgICAgICAsIG1fY3Jvc3NPcmlnaW5Nb2RlQWxsb3dzQ29va2llcyhmYWxzZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUHJlbG9hZFJlcXVlc3QoaW5pdGlhdG9yLCBy
ZXNvdXJjZVVSTCwgYmFzZVVSTCwgcmVzb3VyY2VUeXBlLCBTdHJpbmcoKSkpOwogICAgIH0KIAog
ICAgIGJvb2wgaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3Q7CkBAIC01NCwxNiAr
NTQsNiBAQCBwdWJsaWM6CiAgICAgQ2FjaGVkUmVzb3VyY2U6OlR5cGUgcmVzb3VyY2VUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVR5cGU7IH0KIAogcHJpdmF0ZToKLSAgICBQcmVsb2Fk
UmVxdWVzdChjb25zdCBTdHJpbmcmIGluaXRpYXRvciwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVS
TCwgY29uc3QgVVJMJiBiYXNlVVJMLCBDYWNoZWRSZXNvdXJjZTo6VHlwZSByZXNvdXJjZVR5cGUs
IGNvbnN0IFN0cmluZyYgbWVkaWFBdHRyaWJ1dGUpCi0gICAgICAgIDogbV9pbml0aWF0b3IoaW5p
dGlhdG9yKQotICAgICAgICAsIG1fcmVzb3VyY2VVUkwocmVzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5
KCkpCi0gICAgICAgICwgbV9iYXNlVVJMKGJhc2VVUkwuY29weSgpKQotICAgICAgICAsIG1fcmVz
b3VyY2VUeXBlKHJlc291cmNlVHlwZSkKLSAgICAgICAgLCBtX21lZGlhQXR0cmlidXRlKG1lZGlh
QXR0cmlidXRlLmlzb2xhdGVkQ29weSgpKQotICAgICAgICAsIG1fY3Jvc3NPcmlnaW5Nb2RlQWxs
b3dzQ29va2llcyhmYWxzZSkKLSAgICB7Ci0gICAgfQotCiAgICAgVVJMIGNvbXBsZXRlVVJMKERv
Y3VtZW50Jik7CiAKICAgICBTdHJpbmcgbV9pbml0aWF0b3I7CkBAIC03NSw3ICs2NSw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2Nyb3NzT3JpZ2luTW9kZUFsbG93c0Nvb2tpZXM7CiB9OwogCi10
eXBlZGVmIFZlY3RvcjxPd25QdHI8UHJlbG9hZFJlcXVlc3Q+PiBQcmVsb2FkUmVxdWVzdFN0cmVh
bTsKK3R5cGVkZWYgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxQcmVsb2FkUmVxdWVzdD4+IFByZWxv
YWRSZXF1ZXN0U3RyZWFtOwogCiBjbGFzcyBIVE1MUmVzb3VyY2VQcmVsb2FkZXIgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEhUTUxSZXNvdXJjZVByZWxvYWRlcik7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwpAQCAtODcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdm9pZCB0
YWtlQW5kUHJlbG9hZChQcmVsb2FkUmVxdWVzdFN0cmVhbSYpOwotICAgIHZvaWQgcHJlbG9hZChP
d25QdHI8UHJlbG9hZFJlcXVlc3Q+KTsKKyAgICB2b2lkIHByZWxvYWQoc3RkOjp1bmlxdWVfcHRy
PFByZWxvYWRSZXF1ZXN0Pik7CiAKICAgICBXZWFrUHRyPEhUTUxSZXNvdXJjZVByZWxvYWRlcj4g
Y3JlYXRlV2Vha1B0cigpIHsgcmV0dXJuIG1fd2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigpOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5u
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuaAppbmRl
eCA3MjU4MjcyNjI4MmEwMGRkODhmMTBhOTQzMjZiMmU1MjQ3OTJmOGJkLi40NWJmOGQwMzI0Zjhl
ZDIxYzllNmU4ZGRlMTRiYmM5ZGUwNmNiYzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJQ
ZW5kaW5nU2NyaXB0LmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNDQsMTAgKzQzLDcgQEAgY2xhc3MgU2NyaXB0U291cmNlQ29kZTsK
IGNsYXNzIEhUTUxTY3JpcHRSdW5uZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhUTUxT
Y3JpcHRSdW5uZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgT3duUHRyPEhUTUxTY3JpcHRSdW5uZXI+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEhU
TUxTY3JpcHRSdW5uZXJIb3N0JiBob3N0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBIVE1MU2NyaXB0UnVubmVyKGRvY3VtZW50LCBob3N0KSk7Ci0gICAgfQorICAgIEhUTUxT
Y3JpcHRSdW5uZXIoRG9jdW1lbnQmLCBIVE1MU2NyaXB0UnVubmVySG9zdCYpOwogICAgIH5IVE1M
U2NyaXB0UnVubmVyKCk7CiAKICAgICB2b2lkIGRldGFjaCgpOwpAQCAtNjQsOCArNjAsNiBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc0V4ZWN1dGluZ1NjcmlwdCgpIGNvbnN0IHsgcmV0dXJuICEhbV9z
Y3JpcHROZXN0aW5nTGV2ZWw7IH0KIAogcHJpdmF0ZToKLSAgICBIVE1MU2NyaXB0UnVubmVyKERv
Y3VtZW50JiwgSFRNTFNjcmlwdFJ1bm5lckhvc3QmKTsKLQogICAgIEZyYW1lKiBmcmFtZSgpIGNv
bnN0OwogCiAgICAgdm9pZCBleGVjdXRlUGFyc2luZ0Jsb2NraW5nU2NyaXB0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCmluZGV4IDAzNjNlM2E2MTA0M2NkMDFlN2EzYzY0
MWZlZmQyNjg3ZWExODJhNjcuLjcyMmVkOTA4MDI1MGFkMTQ5Yzg2Y2RjNTU5Y2U2ODAyZTU3MWQw
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCkBAIC0xNzEsNyArMTcx
LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmluaXRpYWxp
emVkKTsKICAgICAgICAgbV90eXBlID0gRE9DVFlQRTsKLSAgICAgICAgbV9kb2N0eXBlRGF0YSA9
IGFkb3B0UHRyKG5ldyBEb2N0eXBlRGF0YSk7CisgICAgICAgIG1fZG9jdHlwZURhdGEgPSBzdGQ6
Om1ha2VfdW5pcXVlPERvY3R5cGVEYXRhPigpOwogICAgIH0KIAogICAgIHZvaWQgYmVnaW5ET0NU
WVBFKFVDaGFyIGNoYXJhY3RlcikKQEAgLTIyNiw5ICsyMjYsOSBAQCBwdWJsaWM6CiAgICAgICAg
IG1fZG9jdHlwZURhdGEtPm1fc3lzdGVtSWRlbnRpZmllci5hcHBlbmQoY2hhcmFjdGVyKTsKICAg
ICB9CiAKLSAgICBPd25QdHI8RG9jdHlwZURhdGE+IHJlbGVhc2VEb2N0eXBlRGF0YSgpCisgICAg
c3RkOjp1bmlxdWVfcHRyPERvY3R5cGVEYXRhPiByZWxlYXNlRG9jdHlwZURhdGEoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fZG9jdHlwZURhdGEucmVsZWFzZSgpOworICAgICAgICByZXR1cm4g
c3RkOjptb3ZlKG1fZG9jdHlwZURhdGEpOwogICAgIH0KIAogICAgIC8qIFN0YXJ0L0VuZCBUYWcg
VG9rZW5zICovCkBAIC00NDUsNyArNDQ1LDcgQEAgcHJpdmF0ZToKICAgICBBdHRyaWJ1dGUqIG1f
Y3VycmVudEF0dHJpYnV0ZTsKIAogICAgIC8vIEZvciBET0NUWVBFCi0gICAgT3duUHRyPERvY3R5
cGVEYXRhPiBtX2RvY3R5cGVEYXRhOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEb2N0eXBlRGF0YT4g
bV9kb2N0eXBlRGF0YTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxUb2tlbml6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxU
b2tlbml6ZXIuaAppbmRleCBhYmFjYWJiYjdhZDA2Y2RjOWQ4ZDkwYjlkMWVhNGQ4YzZkN2VmYzNm
Li4zODAyMWU4N2QzNDhiNDc4NmRiMjFjNTJlMGRlNzAwNzE4OGY2ODE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNz
IEhUTUxUb2tlbml6ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhUTUxUb2tlbml6ZXIp
OwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBPd25Q
dHI8SFRNTFRva2VuaXplcj4gY3JlYXRlKGNvbnN0IEhUTUxQYXJzZXJPcHRpb25zJiBvcHRpb25z
KSB7IHJldHVybiBhZG9wdFB0cihuZXcgSFRNTFRva2VuaXplcihvcHRpb25zKSk7IH0KKyAgICBl
eHBsaWNpdCBIVE1MVG9rZW5pemVyKGNvbnN0IEhUTUxQYXJzZXJPcHRpb25zJik7CiAgICAgfkhU
TUxUb2tlbml6ZXIoKTsKIAogICAgIHZvaWQgcmVzZXQoKTsKQEAgLTE3Myw4ICsxNzMsNiBAQCBw
dWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IEhUTUxUb2tlbml6ZXIoY29u
c3QgSFRNTFBhcnNlck9wdGlvbnMmKTsKLQogICAgIGlubGluZSBib29sIHByb2Nlc3NFbnRpdHko
U2VnbWVudGVkU3RyaW5nJik7CiAKICAgICBpbmxpbmUgdm9pZCBwYXJzZUVycm9yKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCmluZGV4IDA3NTk3NjA2
MjFkYzE0NWU1NDZhNjJmMjg0MDcxNzMwZjFjOGNkNTYuLjc1YjA0NDZlMzc3OWQ2MDU5MTdhNTkx
Y2RjYjU5ZWMxNTE1YTdjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUcmVlQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxU
cmVlQnVpbGRlci5oCkBAIC01NywxNCArNTcsOCBAQCBjbGFzcyBIVE1MRG9jdW1lbnRQYXJzZXI7
CiBjbGFzcyBIVE1MVHJlZUJ1aWxkZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhUTUxU
cmVlQnVpbGRlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRp
YyBPd25QdHI8SFRNTFRyZWVCdWlsZGVyPiBjcmVhdGUoSFRNTERvY3VtZW50UGFyc2VyJiBwYXJz
ZXIsIEhUTUxEb2N1bWVudCYgZG9jdW1lbnQsIFBhcnNlckNvbnRlbnRQb2xpY3kgcGFyc2VyQ29u
dGVudFBvbGljeSwgY29uc3QgSFRNTFBhcnNlck9wdGlvbnMmIG9wdGlvbnMpCi0gICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEhUTUxUcmVlQnVpbGRlcihwYXJzZXIsIGRvY3VtZW50
LCBwYXJzZXJDb250ZW50UG9saWN5LCBvcHRpb25zKSk7Ci0gICAgfQotICAgIHN0YXRpYyBPd25Q
dHI8SFRNTFRyZWVCdWlsZGVyPiBjcmVhdGUoSFRNTERvY3VtZW50UGFyc2VyJiBwYXJzZXIsIERv
Y3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgUGFyc2Vy
Q29udGVudFBvbGljeSBwYXJzZXJDb250ZW50UG9saWN5LCBjb25zdCBIVE1MUGFyc2VyT3B0aW9u
cyYgb3B0aW9ucykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgSFRNTFRyZWVC
dWlsZGVyKHBhcnNlciwgZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBwYXJzZXJDb250ZW50UG9s
aWN5LCBvcHRpb25zKSk7Ci0gICAgfQorICAgIEhUTUxUcmVlQnVpbGRlcihIVE1MRG9jdW1lbnRQ
YXJzZXImLCBIVE1MRG9jdW1lbnQmLCBQYXJzZXJDb250ZW50UG9saWN5LCBjb25zdCBIVE1MUGFy
c2VyT3B0aW9ucyYpOworICAgIEhUTUxUcmVlQnVpbGRlcihIVE1MRG9jdW1lbnRQYXJzZXImLCBE
b2N1bWVudEZyYWdtZW50JiwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIFBhcnNlckNvbnRlbnRQ
b2xpY3ksIGNvbnN0IEhUTUxQYXJzZXJPcHRpb25zJik7CiAgICAgfkhUTUxUcmVlQnVpbGRlcigp
OwogCiAgICAgY29uc3QgSFRNTEVsZW1lbnRTdGFjayogb3BlbkVsZW1lbnRzKCkgY29uc3QgeyBy
ZXR1cm4gbV90cmVlLm9wZW5FbGVtZW50cygpOyB9CkBAIC0xMjAsOSArMTE0LDYgQEAgcHJpdmF0
ZToKICAgICAgICAgQWZ0ZXJBZnRlckZyYW1lc2V0TW9kZSwKICAgICB9OwogCi0gICAgSFRNTFRy
ZWVCdWlsZGVyKEhUTUxEb2N1bWVudFBhcnNlciYsIEhUTUxEb2N1bWVudCYsIFBhcnNlckNvbnRl
bnRQb2xpY3ksIGNvbnN0IEhUTUxQYXJzZXJPcHRpb25zJik7Ci0gICAgSFRNTFRyZWVCdWlsZGVy
KEhUTUxEb2N1bWVudFBhcnNlciYsIERvY3VtZW50RnJhZ21lbnQmLCBFbGVtZW50KiBjb250ZXh0
RWxlbWVudCwgUGFyc2VyQ29udGVudFBvbGljeSwgY29uc3QgSFRNTFBhcnNlck9wdGlvbnMmKTsK
LQogI2lmIFBMQVRGT1JNKElPUykKICAgICB2b2lkIGluc2VydFBob25lTnVtYmVyTGluayhjb25z
dCBTdHJpbmcmKTsKICAgICB2b2lkIGxpbmtpZnlQaG9uZU51bWJlcnMoY29uc3QgU3RyaW5nJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNl
ci5jcHAKaW5kZXggNDNmZjBhMTRkZjkwNzk4YmRjYzU5ZmFmZWM1OWFhNmYwZjllY2Y2OS4uMzVj
Y2ViZWEyZjc1YTkyY2NiZWYwZTk5YmEyMjJjZGZmZTc4ZGU0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcApAQCAtMzMsNyAr
MzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEhUTUxWaWV3U291cmNlUGFyc2VyOjpIVE1M
Vmlld1NvdXJjZVBhcnNlcihIVE1MVmlld1NvdXJjZURvY3VtZW50JiBkb2N1bWVudCkKICAgICA6
IERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpCi0gICAgLCBtX3Rva2VuaXplcihI
VE1MVG9rZW5pemVyOjpjcmVhdGUoSFRNTFBhcnNlck9wdGlvbnMoZG9jdW1lbnQpKSkKKyAgICAs
IG1fdG9rZW5pemVyKHN0ZDo6bWFrZV91bmlxdWU8SFRNTFRva2VuaXplcj4oSFRNTFBhcnNlck9w
dGlvbnMoZG9jdW1lbnQpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFZpZXdTb3VyY2VQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmgKaW5kZXggNjE2MWM3ODkyMGIyMzkxMjhjZWJkOTI0
MjIzMzA0MDA0M2IwZmVmYi4uYzQ4YWRiZWI3ZDc3MjJiZTBjNTkyNDFlOWUxMTdjYjZlZTFjN2Qx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFZpZXdTb3VyY2VQ
YXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBh
cnNlci5oCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgSFRNTElucHV0U3RyZWFtIG1f
aW5wdXQ7CiAgICAgSFRNTFRva2VuIG1fdG9rZW47CiAgICAgSFRNTFNvdXJjZVRyYWNrZXIgbV9z
b3VyY2VUcmFja2VyOwotICAgIE93blB0cjxIVE1MVG9rZW5pemVyPiBtX3Rva2VuaXplcjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SFRNTFRva2VuaXplcj4gbV90b2tlbml6ZXI7CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCmluZGV4IDdmZjRjZjg0YWIy
MTZlODBiY2U5NTAxMTJjYzkxNThkMTc1NWQ3YWUuLjFiZjVhMDk2ZWM1NTE3NjFkOGI5ODAxMDQ3
NDc1MTBmNTY1YmY0YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hT
U0F1ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3Iu
Y3BwCkBAIC0zMDUsNyArMzA1LDcgQEAgdm9pZCBYU1NBdWRpdG9yOjppbml0KERvY3VtZW50KiBk
b2N1bWVudCwgWFNTQXVkaXRvckRlbGVnYXRlKiBhdWRpdG9yRGVsZWdhdGUpCiAgICAgICAgICAg
ICAgICAgaWYgKG1fZGVjb2RlZEhUVFBCb2R5LmZpbmQoaXNSZXF1aXJlZEZvckluamVjdGlvbikg
PT0gbm90Rm91bmQpCiAgICAgICAgICAgICAgICAgICAgIG1fZGVjb2RlZEhUVFBCb2R5ID0gU3Ry
aW5nKCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fZGVjb2RlZEhUVFBCb2R5Lmxlbmd0aCgpID49
IG1pbmltdW1MZW5ndGhGb3JTdWZmaXhUcmVlKQotICAgICAgICAgICAgICAgICAgICBtX2RlY29k
ZWRIVFRQQm9keVN1ZmZpeFRyZWUgPSBhZG9wdFB0cihuZXcgU3VmZml4VHJlZTxBU0NJSUNvZGVi
b29rPihtX2RlY29kZWRIVFRQQm9keSwgc3VmZml4VHJlZURlcHRoKSk7CisgICAgICAgICAgICAg
ICAgICAgIG1fZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3Vm
Zml4VHJlZTxBU0NJSUNvZGVib29rPj4obV9kZWNvZGVkSFRUUEJvZHksIHN1ZmZpeFRyZWVEZXB0
aCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0zMTYsNyArMzE2LDcgQEAg
dm9pZCBYU1NBdWRpdG9yOjppbml0KERvY3VtZW50KiBkb2N1bWVudCwgWFNTQXVkaXRvckRlbGVn
YXRlKiBhdWRpdG9yRGVsZWdhdGUpCiAgICAgfQogfQogCi1Pd25QdHI8WFNTSW5mbz4gWFNTQXVk
aXRvcjo6ZmlsdGVyVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQorc3Rk
Ojp1bmlxdWVfcHRyPFhTU0luZm8+IFhTU0F1ZGl0b3I6OmZpbHRlclRva2VuKGNvbnN0IEZpbHRl
clRva2VuUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBJbml0aWFs
aXplZCk7CiAgICAgaWYgKCFtX2lzRW5hYmxlZCB8fCBtX3hzc1Byb3RlY3Rpb24gPT0gQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpBbGxvd1JlZmxlY3RlZFhTUykKQEAgLTMzMiwxMiArMzMyLDExIEBA
IE93blB0cjxYU1NJbmZvPiBYU1NBdWRpdG9yOjpmaWx0ZXJUb2tlbihjb25zdCBGaWx0ZXJUb2tl
blJlcXVlc3QmIHJlcXVlc3QpCiAgICAgICAgICAgICBmaWx0ZXJFbmRUb2tlbihyZXF1ZXN0KTsK
ICAgICB9CiAKLSAgICBpZiAoZGlkQmxvY2tTY3JpcHQpIHsKLSAgICAgICAgYm9vbCBkaWRCbG9j
a0VudGlyZVBhZ2UgPSAobV94c3NQcm90ZWN0aW9uID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6
QmxvY2tSZWZsZWN0ZWRYU1MpOwotICAgICAgICBPd25QdHI8WFNTSW5mbz4geHNzSW5mbyA9IFhT
U0luZm86OmNyZWF0ZShkaWRCbG9ja0VudGlyZVBhZ2UsIG1fZGlkU2VuZFZhbGlkWFNTUHJvdGVj
dGlvbkhlYWRlciwgbV9kaWRTZW5kVmFsaWRDU1BIZWFkZXIpOwotICAgICAgICByZXR1cm4geHNz
SW5mby5yZWxlYXNlKCk7Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghZGlk
QmxvY2tTY3JpcHQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYm9vbCBkaWRCbG9j
a0VudGlyZVBhZ2UgPSAobV94c3NQcm90ZWN0aW9uID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6
QmxvY2tSZWZsZWN0ZWRYU1MpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFhTU0luZm8+
KGRpZEJsb2NrRW50aXJlUGFnZSwgbV9kaWRTZW5kVmFsaWRYU1NQcm90ZWN0aW9uSGVhZGVyLCBt
X2RpZFNlbmRWYWxpZENTUEhlYWRlcik7CiB9CiAKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyU3Rh
cnRUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9YU1NBdWRpdG9yLmgKaW5kZXggMTliNzVkN2MwMTJjODdmNTAzOTFiZmFhYTBj
NTM4ODk1NTI1NzE2OC4uMjhmZTNkZWM5NzFjNDFlYjQwZmJkMjM2MjlkZmY1MDFkODA3ZmJkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaApAQCAtNjEsNyArNjEsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBpbml0KERvY3VtZW50KiwgWFNTQXVkaXRvckRlbGVnYXRlKik7
CiAgICAgdm9pZCBpbml0Rm9yRnJhZ21lbnQoKTsKIAotICAgIE93blB0cjxYU1NJbmZvPiBmaWx0
ZXJUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
WFNTSW5mbz4gZmlsdGVyVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0Jik7CiAgICAgYm9v
bCBpc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTEx
Myw3ICsxMTMsNyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIG1fZGVjb2RlZFVSTDsKICAgICBT
dHJpbmcgbV9kZWNvZGVkSFRUUEJvZHk7Ci0gICAgT3duUHRyPFN1ZmZpeFRyZWU8QVNDSUlDb2Rl
Ym9vaz4+IG1fZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
U3VmZml4VHJlZTxBU0NJSUNvZGVib29rPj4gbV9kZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVlOwog
CiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBTdHJpbmcgbV9jYWNoZWREZWNvZGVkU25pcHBldDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0
ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmgKaW5k
ZXggMGM0MDBlOTNlOTA2NDM2YzRlNTkwNjZiYTczMGE5YmZiNDRhODA2MC4uZTEyNzYwZTMyNzRi
ZTg1YzVhZjE2NmFiMjRjMTYxNjNlZWU0MGZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmgKQEAgLTM5LDIzICszOSwxNyBAQCBjbGFzcyBG
b3JtRGF0YTsKIAogY2xhc3MgWFNTSW5mbyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIE93blB0cjxY
U1NJbmZvPiBjcmVhdGUoYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UsIGJvb2wgZGlkU2VuZFhTU1By
b3RlY3Rpb25IZWFkZXIsIGJvb2wgZGlkU2VuZENTUEhlYWRlcikKKyAgICBYU1NJbmZvKGJvb2wg
ZGlkQmxvY2tFbnRpcmVQYWdlLCBib29sIGRpZFNlbmRYU1NQcm90ZWN0aW9uSGVhZGVyLCBib29s
IGRpZFNlbmRDU1BIZWFkZXIpCisgICAgICAgIDogbV9kaWRCbG9ja0VudGlyZVBhZ2UoZGlkQmxv
Y2tFbnRpcmVQYWdlKQorICAgICAgICAsIG1fZGlkU2VuZFhTU1Byb3RlY3Rpb25IZWFkZXIoZGlk
U2VuZFhTU1Byb3RlY3Rpb25IZWFkZXIpCisgICAgICAgICwgbV9kaWRTZW5kQ1NQSGVhZGVyKGRp
ZFNlbmRDU1BIZWFkZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFhTU0lu
Zm8oZGlkQmxvY2tFbnRpcmVQYWdlLCBkaWRTZW5kWFNTUHJvdGVjdGlvbkhlYWRlciwgZGlkU2Vu
ZENTUEhlYWRlcikpOwogICAgIH0KIAogICAgIGJvb2wgbV9kaWRCbG9ja0VudGlyZVBhZ2U7CiAg
ICAgYm9vbCBtX2RpZFNlbmRYU1NQcm90ZWN0aW9uSGVhZGVyOwogICAgIGJvb2wgbV9kaWRTZW5k
Q1NQSGVhZGVyOwogICAgIFRleHRQb3NpdGlvbiBtX3RleHRQb3NpdGlvbjsKLQotcHJpdmF0ZToK
LSAgICBYU1NJbmZvKGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlLCBib29sIGRpZFNlbmRYU1NQcm90
ZWN0aW9uSGVhZGVyLCBib29sIGRpZFNlbmRDU1BIZWFkZXIpCi0gICAgICAgIDogbV9kaWRCbG9j
a0VudGlyZVBhZ2UoZGlkQmxvY2tFbnRpcmVQYWdlKQotICAgICAgICAsIG1fZGlkU2VuZFhTU1By
b3RlY3Rpb25IZWFkZXIoZGlkU2VuZFhTU1Byb3RlY3Rpb25IZWFkZXIpCi0gICAgICAgICwgbV9k
aWRTZW5kQ1NQSGVhZGVyKGRpZFNlbmRDU1BIZWFkZXIpCi0gICAgewotICAgIH0KIH07CiAKIGNs
YXNzIFhTU0F1ZGl0b3JEZWxlZ2F0ZSB7CkBAIC03NCw4ICs2OCw2IEBAIHByaXZhdGU6CiAgICAg
VVJMIG1fcmVwb3J0VVJMOwogfTsKIAotdHlwZWRlZiBWZWN0b3I8T3duUHRyPFhTU0luZm8+PiBY
U1NJbmZvU3RyZWFtOwotCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Rl
eHRSZXNvdXJjZURlY29kZXIuY3BwCmluZGV4IDQwMTIzOWZkYThjNzc1OTU2N2M0ZjI1YmY3N2E0
NjFhNjBmNDhlYzcuLjUxMDVhZTBiYmM3MzE4ZmRiY2E2ZWQyMmUxZTNkMTJkMmIwMDc0ZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAKQEAgLTU0
Myw3ICs1NDMsNyBAQCBib29sIFRleHRSZXNvdXJjZURlY29kZXI6OmNoZWNrRm9ySGVhZENoYXJz
ZXQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbiwgYm9vbAogICAgIGlmIChtX2NvbnRlbnRU
eXBlID09IFhNTCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBtX2NoYXJzZXRQYXJzZXIg
PSBIVE1MTWV0YUNoYXJzZXRQYXJzZXI6OmNyZWF0ZSgpOworICAgIG1fY2hhcnNldFBhcnNlciA9
IHN0ZDo6bWFrZV91bmlxdWU8SFRNTE1ldGFDaGFyc2V0UGFyc2VyPigpOwogICAgIHJldHVybiBj
aGVja0Zvck1ldGFDaGFyc2V0KGRhdGEsIGxlbik7CiB9CiAKQEAgLTU1Myw3ICs1NTMsNyBAQCBi
b29sIFRleHRSZXNvdXJjZURlY29kZXI6OmNoZWNrRm9yTWV0YUNoYXJzZXQoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc2V0RW5j
b2RpbmcobV9jaGFyc2V0UGFyc2VyLT5lbmNvZGluZygpLCBFbmNvZGluZ0Zyb21NZXRhVGFnKTsK
LSAgICBtX2NoYXJzZXRQYXJzZXIuY2xlYXIoKTsKKyAgICBtX2NoYXJzZXRQYXJzZXIgPSBudWxs
cHRyOwogICAgIG1fY2hlY2tlZEZvckhlYWRDaGFyc2V0ID0gdHJ1ZTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNv
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5oCmluZGV4
IDc3MTE4NWZiNGQ1NzMwMzhmNzBmNzIxYmFhZGMxMTg1NGNhNTJjNzEuLmU1MWYxZjdhOGFmYjVm
ZmNiMzFjMmIzZDM1YmFkYjBlYzFjMzdmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Rl
eHRSZXNvdXJjZURlY29kZXIuaApAQCAtNjcsOCArNjcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBz
YXdFcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fc2F3RXJyb3I7IH0KIAogcHJpdmF0ZToKLSAgICBU
ZXh0UmVzb3VyY2VEZWNvZGVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFRleHRFbmNv
ZGluZyYgZGVmYXVsdEVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1c2Vz
RW5jb2RpbmdEZXRlY3Rvcik7CisgICAgVGV4dFJlc291cmNlRGVjb2Rlcihjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBUZXh0RW5jb2RpbmcmIGRlZmF1bHRFbmNvZGluZywgYm9vbCB1c2Vz
RW5jb2RpbmdEZXRlY3Rvcik7CiAKICAgICBlbnVtIENvbnRlbnRUeXBlIHsgUGxhaW5UZXh0LCBI
VE1MLCBYTUwsIENTUyB9OyAvLyBQbGFpblRleHQgb25seSBjaGVja3MgZm9yIEJPTS4KICAgICBz
dGF0aWMgQ29udGVudFR5cGUgZGV0ZXJtaW5lQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSk7CkBAIC05NCw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nhd0Vycm9yOwog
ICAgIGJvb2wgbV91c2VzRW5jb2RpbmdEZXRlY3RvcjsKIAotICAgIE93blB0cjxIVE1MTWV0YUNo
YXJzZXRQYXJzZXI+IG1fY2hhcnNldFBhcnNlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SFRNTE1l
dGFDaGFyc2V0UGFyc2VyPiBtX2NoYXJzZXRQYXJzZXI7CiB9OwogCiB9Cg==
</data>
<flag name="review"
          id="245514"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>