<?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>156795</bug_id>
          
          <creation_ts>2016-04-20 09:39:04 -0700</creation_ts>
          <short_desc>Move parsing of mspace attributes to a MathMLSpaceElement class</short_desc>
          <delta_ts>2016-07-11 23:03:10 -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>MathML</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>156792</dependson>
          <blocked>156536</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Frédéric Wang Nélar">fred.wang</reporter>
          <assigned_to name="Frédéric Wang Nélar">fred.wang</assigned_to>
          <cc>alex</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1185437</commentid>
    <comment_count>0</comment_count>
      <attachid>276830</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-04-20 09:39:04 -0700</bug_when>
    <thetext>Created attachment 276830
WIP Patch

This is bug 156536 for the &lt;mspace/&gt; element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186604</commentid>
    <comment_count>1</comment_count>
      <attachid>276830</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-04-23 02:14:58 -0700</bug_when>
    <thetext>Comment on attachment 276830
WIP Patch

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

&gt; Source/WebCore/rendering/mathml/RenderMathMLSpace.cpp:66
&gt; +    spaceElement.depthLength().toUserUnits(style(), m_depth);

Note: my plan (not tested yet) was to directly introduce helper function mspaceWidth() mspaceHeight() and mspaceDepth() that would directly call toUserUnits. That way we can just remove m_width, m_height and m_depth members.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193776</commentid>
    <comment_count>2</comment_count>
      <attachid>279108</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-05-17 03:16:00 -0700</bug_when>
    <thetext>Created attachment 279108
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193784</commentid>
    <comment_count>3</comment_count>
      <attachid>279113</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-05-17 05:30:35 -0700</bug_when>
    <thetext>Created attachment 279113
Patch for EWS testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193785</commentid>
    <comment_count>4</comment_count>
      <attachid>279114</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-05-17 05:32:07 -0700</bug_when>
    <thetext>Created attachment 279114
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193787</commentid>
    <comment_count>5</comment_count>
      <attachid>279115</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-05-17 06:06:02 -0700</bug_when>
    <thetext>Created attachment 279115
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194233</commentid>
    <comment_count>6</comment_count>
      <attachid>279241</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-05-18 06:33:13 -0700</bug_when>
    <thetext>Created attachment 279241
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208723</commentid>
    <comment_count>7</comment_count>
      <attachid>279241</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-07-07 12:20:57 -0700</bug_when>
    <thetext>Comment on attachment 279241
Patch

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

This looks good except: (1) I think we could reduce some #include churn if you moved those implementations into the CPP file, and (2) this doesn&apos;t apply to the tree at present.

Could you please revise and I&apos;ll approve it?

&gt; Source/WebCore/mathml/MathMLElement.h:66
&gt; +        bool dirty = true;

These should be in our standard C++11 style:
LengthType type { LengthType::ParsingFailed; }
float value { 0 };
bool dirty { true };

&gt; Source/WebCore/mathml/MathMLSpaceElement.h:40
&gt; +    const Length&amp; depth() { return cachedMathMLLength(MathMLNames::depthAttr, m_depth); }

If you moved these into the implementation file, you could probably avoid #including MathMLNames.h in the header file. This would be beneficial to build time.

&gt; Source/WebCore/rendering/mathml/RenderMathMLSpace.cpp:-78
&gt; -    setNeedsLayoutAndPrefWidthsRecalc();

Yay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209091</commentid>
    <comment_count>8</comment_count>
      <attachid>283153</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-07-08 07:04:21 -0700</bug_when>
    <thetext>Created attachment 283153
Patch

Review comments addressed, but this is still blocked by bug 156792.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209612</commentid>
    <comment_count>9</comment_count>
      <attachid>283308</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-07-11 02:25:23 -0700</bug_when>
    <thetext>Created attachment 283308
Patch bug 156792 + 156795 (for EWS testing)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209787</commentid>
    <comment_count>10</comment_count>
      <attachid>283153</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-07-11 13:48:13 -0700</bug_when>
    <thetext>Comment on attachment 283153
Patch

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

Looks good. r=me after you land the patch this depends on.

&gt; Source/WebCore/mathml/MathMLSpaceElement.cpp:39
&gt; +    : MathMLElement(tagName, document)

It&apos;s a little unusual for us to inline constructors like this. Did you measure this as a bottleneck of some kind?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209940</commentid>
    <comment_count>11</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-07-11 21:55:14 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Comment on attachment 283153 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=283153&amp;action=review
&gt; 
&gt; Looks good. r=me after you land the patch this depends on.
&gt; 
&gt; &gt; Source/WebCore/mathml/MathMLSpaceElement.cpp:39
&gt; &gt; +    : MathMLElement(tagName, document)
&gt; 
&gt; It&apos;s a little unusual for us to inline constructors like this. Did you
&gt; measure this as a bottleneck of some kind?

I don&apos;t think I did that on purpose, I&apos;ll remove the inline keyword (it seems that I copied it from MathMLMathElement which has had it for a long time).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209941</commentid>
    <comment_count>12</comment_count>
      <attachid>283387</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-07-11 21:57:01 -0700</bug_when>
    <thetext>Created attachment 283387
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209945</commentid>
    <comment_count>13</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-07-11 23:00:46 -0700</bug_when>
    <thetext>Committed r203108: &lt;http://trac.webkit.org/changeset/203108&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276830</attachid>
            <date>2016-04-20 09:39:04 -0700</date>
            <delta_ts>2016-05-17 03:16:00 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>mspace-attribute-parsing.patch</filename>
            <type>text/plain</type>
            <size>11269</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTYwZGJkMy4uNDMyODIwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE5ODIsNiArMTk4Miw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBtYXRo
bWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCiAgICAgbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVu
dC5jcHAKICAgICBtYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAKKyAgICBtYXRobWwvTWF0
aE1MU3BhY2VFbGVtZW50LmNwcAogICAgIG1hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAKIAog
ICAgIHBhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MTGVuZ3RoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxMZW5ndGguY3BwCmluZGV4IGQ3YzU1YWMuLjdkZGJlYWY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MTGVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MTGVuZ3RoLmNwcApAQCAtNjUsNiArNjUsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogLy8gICBudW1iZXIsIHJlcHJlc2VudGluZyBhIHRlcm1pbmF0aW5nIGRlY2ltYWwgbnVtYmVy
IChhIHR5cGUgb2YgcmF0aW9uYWwKIC8vICAgbnVtYmVyKSIKIC8vCitNYXRoTUxMZW5ndGg6Ok1h
dGhNTExlbmd0aCgpCisgICAgOiBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cygwKQorICAgICwgbV91
bml0KE1hdGhNTExlbmd0aDo6VW5rbm93bikKK3sKK30KKworCiBNYXRoTUxMZW5ndGg6Ok1hdGhN
TExlbmd0aChjb25zdCBTdHJpbmcmIHZhbHVlQXNTdHJpbmcpCiAgICAgOiBtX3ZhbHVlSW5TcGVj
aWZpZWRVbml0cygwKQogICAgICwgbV91bml0KE1hdGhNTExlbmd0aDo6VW5rbm93bikKQEAgLTE5
MSw2ICsxOTgsOSBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIHBhcnNlTmFtZWRTcGFjZShjb25z
dCBTdHJpbmcmIHN0cmluZykKIAogdm9pZCBNYXRoTUxMZW5ndGg6OnNldFZhbHVlQXNTdHJpbmco
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CisgICAgbV91bml0ID0gTWF0aE1MTGVuZ3RoOjpVbmtu
b3duOworICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gMDsKKwogICAgIFN0cmluZyBzID0g
c3RyaW5nLnNpbXBsaWZ5V2hpdGVTcGFjZSgpOwogCiAgICAgaWYgKHMuaXNFbXB0eSgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTExlbmd0aC5oIGIvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTExlbmd0aC5oCmluZGV4IDdmYTFkYmIuLmZiYzRjNjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxMZW5ndGguaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MTGVuZ3RoLmgKQEAgLTMwLDggKzMwLDEwIEBAIGNsYXNzIFJl
bmRlclN0eWxlOwogY2xhc3MgTWF0aE1MTGVuZ3RoIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKKyAgICBNYXRoTUxMZW5ndGgoKTsKICAgICBNYXRoTUxMZW5ndGgoY29u
c3QgU3RyaW5nJiB2YWx1ZUFzU3RyaW5nKTsKICAgICBib29sIHRvVXNlclVuaXRzKGNvbnN0IFJl
bmRlclN0eWxlJiwgTGF5b3V0VW5pdCYgbGVuZ3RoVmFsdWUsIGJvb2wgYWxsb3dOZWdhdGl2ZVZh
bHVlcyA9IHRydWUpIGNvbnN0OworICAgIHZvaWQgc2V0VmFsdWVBc1N0cmluZyhjb25zdCBTdHJp
bmcmKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIE1hdGhNTExlbmd0aFR5cGUgewpAQCAtNDksNyAr
NTEsNiBAQCBwcml2YXRlOgogICAgICAgICBNdSAvLyBUaGlzIGlzIFRlWCdzIE1hdGggVW5pdCAo
MSBtdSA9IDEvMTggZW0pLgogICAgIH07CiAgICAgTWF0aE1MTGVuZ3RoVHlwZSBzdHJpbmdUb0xl
bmd0aFR5cGUoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRWYWx1ZUFzU3RyaW5nKGNvbnN0
IFN0cmluZyYpOwogCiAgICAgZmxvYXQgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHM7CiAgICAgTWF0
aE1MTGVuZ3RoVHlwZSBtX3VuaXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MU3BhY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFj
ZUVsZW1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3NzQyNjQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVt
ZW50LmNwcApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxp
YSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1BVEhNTCkKKworI2luY2x1ZGUgIk1hdGhN
TFNwYWNlRWxlbWVudC5oIgorCisjaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKKyNpbmNsdWRlICJS
ZW5kZXJNYXRoTUxTcGFjZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVz
cGFjZSBNYXRoTUxOYW1lczsKKworaW5saW5lIE1hdGhNTFNwYWNlRWxlbWVudDo6TWF0aE1MU3Bh
Y2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVu
dCkKKyAgICA6IE1hdGhNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCit7Cit9CisKK1JlZjxN
YXRoTUxTcGFjZUVsZW1lbnQ+IE1hdGhNTFNwYWNlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBNYXRoTUxTcGFjZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKK30KKwor
dm9pZCBNYXRoTUxTcGFjZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit7CisgICAgaWYgKG5hbWUgPT0g
d2lkdGhBdHRyKQorICAgICAgICBtX3dpZHRoLnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAg
IGVsc2UgaWYgKG5hbWUgPT0gaGVpZ2h0QXR0cikKKyAgICAgICAgbV9oZWlnaHQuc2V0VmFsdWVB
c1N0cmluZyh2YWx1ZSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBkZXB0aEF0dHIpCisgICAgICAg
IG1fZGVwdGguc2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisKKyAgICBNYXRoTUxFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7Cit9CisKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBNYXRoTUxTcGFjZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5
bGU+JiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCit7CisgICAgQVNTRVJUICho
YXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptc3BhY2VUYWcpKTsKKyAgICByZXR1cm4gY3JlYXRlUmVu
ZGVyZXI8UmVuZGVyTWF0aE1MU3BhY2U+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7Cit9CisKK30K
KworI2VuZGlmIC8vIEVOQUJMRShNQVRITUwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
U3BhY2VFbGVtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZkMmRh
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVs
ZW1lbnQuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxp
YSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IE1hdGhNTFNwYWNlRWxlbWVudF9oCisjZGVmaW5lIE1hdGhNTFNwYWNlRWxlbWVudF9oCisKKyNp
ZiBFTkFCTEUoTUFUSE1MKQorI2luY2x1ZGUgIk1hdGhNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJN
YXRoTUxMZW5ndGguaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNYXRoTUxTcGFj
ZUVsZW1lbnQgZmluYWwgOiBwdWJsaWMgTWF0aE1MRWxlbWVudCB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZjxNYXRoTUxTcGFjZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCYpOworICAgIGNvbnN0IE1hdGhNTExlbmd0aCYgd2lkdGhMZW5ndGgo
KSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9CisgICAgY29uc3QgTWF0aE1MTGVuZ3RoJiBoZWln
aHRMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQorICAgIGNvbnN0IE1hdGhNTExl
bmd0aCYgZGVwdGhMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2RlcHRoOyB9CisgICAgCitwcml2
YXRlOgorICAgIE1hdGhNTFNwYWNlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCYpOworICAgIGJvb2wgaXNQcmVzZW50YXRpb25NYXRoTUwoKSBjb25zdCBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpIGZpbmFsOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOworCisgICAgTWF0aE1MTGVuZ3RoIG1fd2lkdGg7
CisgICAgTWF0aE1MTGVuZ3RoIG1faGVpZ2h0OworICAgIE1hdGhNTExlbmd0aCBtX2RlcHRoOwor
fTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1BVEhNTCkKKyNlbmRpZiAvLyBNYXRoTUxTcGFj
ZUVsZW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAK
aW5kZXggMzdmZjY5Zi4uZWU4NTU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTFRleHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
VGV4dEVsZW1lbnQuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAKICNpbmNsdWRlICJNYXRoTUxOYW1l
cy5oIgogI2luY2x1ZGUgIlJlbmRlck1hdGhNTE9wZXJhdG9yLmgiCi0jaW5jbHVkZSAiUmVuZGVy
TWF0aE1MU3BhY2UuaCIKICNpbmNsdWRlICJSZW5kZXJNYXRoTUxUb2tlbi5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC03OSw4ICs3OCw2IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBN
YXRoTUxUZXh0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsCiB7
CiAgICAgaWYgKGhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1vVGFnKSkKICAgICAgICAgcmV0dXJu
IGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTE9wZXJhdG9yPigqdGhpcywgV1RGTW92ZShzdHls
ZSkpOwotICAgIGlmIChoYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptc3BhY2VUYWcpKQotICAgICAg
ICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MU3BhY2U+KCp0aGlzLCBXVEZNb3Zl
KHN0eWxlKSk7CiAgICAgaWYgKGhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6OmFubm90YXRpb25UYWcp
KQogICAgICAgICByZXR1cm4gTWF0aE1MRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFdU
Rk1vdmUoc3R5bGUpLCBpbnNlcnRpb25Qb3NpdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9tYXRodGFncy5pbiBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9tYXRodGFn
cy5pbgppbmRleCA1ZDA4MWQxLi40ZjQwODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvbWF0aHRhZ3MuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL21hdGh0YWdzLmlu
CkBAIC0yNCw3ICsyNCw3IEBAIG1uIGludGVyZmFjZU5hbWU9TWF0aE1MVGV4dEVsZW1lbnQKIG1v
IGludGVyZmFjZU5hbWU9TWF0aE1MVGV4dEVsZW1lbnQKIG10ZXh0IGludGVyZmFjZU5hbWU9TWF0
aE1MVGV4dEVsZW1lbnQKIG1zIGludGVyZmFjZU5hbWU9TWF0aE1MVGV4dEVsZW1lbnQKLW1zcGFj
ZSBpbnRlcmZhY2VOYW1lPU1hdGhNTFRleHRFbGVtZW50Cittc3BhY2UgaW50ZXJmYWNlTmFtZT1N
YXRoTUxTcGFjZUVsZW1lbnQKIG1zdWIgaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWlu
ZXJFbGVtZW50CiBtc3VwIGludGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVu
dAogbXRhYmxlIGludGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNl
LmNwcAppbmRleCA5YmRmYjljLi42MzJiOWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcApAQCAtMzYsNyArMzYsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiB1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7
CiAKLVJlbmRlck1hdGhNTFNwYWNlOjpSZW5kZXJNYXRoTUxTcGFjZShNYXRoTUxUZXh0RWxlbWVu
dCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQorUmVuZGVyTWF0aE1MU3BhY2U6
OlJlbmRlck1hdGhNTFNwYWNlKE1hdGhNTFNwYWNlRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRl
clN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZWxlbWVudCwgV1RGTW92
ZShzdHlsZSkpCiAgICAgLCBtX3dpZHRoKDApCiAgICAgLCBtX2hlaWdodCgwKQpAQCAtNjEsOSAr
NjEsOSBAQCB2b2lkIFJlbmRlck1hdGhNTFNwYWNlOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAg
bV93aWR0aCA9IDA7CiAgICAgbV9oZWlnaHQgPSAwOwogICAgIG1fZGVwdGggPSAwOwotICAgIHBh
cnNlTWF0aE1MTGVuZ3RoKHNwYWNlRWxlbWVudC5nZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6Ondp
ZHRoQXR0ciksIG1fd2lkdGgsICZzdHlsZSgpKTsKLSAgICBwYXJzZU1hdGhNTExlbmd0aChzcGFj
ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpoZWlnaHRBdHRyKSwgbV9oZWlnaHQs
ICZzdHlsZSgpKTsKLSAgICBwYXJzZU1hdGhNTExlbmd0aChzcGFjZUVsZW1lbnQuZ2V0QXR0cmli
dXRlKE1hdGhNTE5hbWVzOjpkZXB0aEF0dHIpLCBtX2RlcHRoLCAmc3R5bGUoKSk7CisgICAgc3Bh
Y2VFbGVtZW50LndpZHRoTGVuZ3RoKCkudG9Vc2VyVW5pdHMoc3R5bGUoKSwgbV93aWR0aCk7Cisg
ICAgc3BhY2VFbGVtZW50LmhlaWdodExlbmd0aCgpLnRvVXNlclVuaXRzKHN0eWxlKCksIG1faGVp
Z2h0KTsKKyAgICBzcGFjZUVsZW1lbnQuZGVwdGhMZW5ndGgoKS50b1VzZXJVbml0cyhzdHlsZSgp
LCBtX2RlcHRoKTsKIAogICAgIC8vIEZJWE1FOiBOZWdhdGl2ZSB3aWR0aCB2YWx1ZXMgc2hvdWxk
IGJlIGFjY2VwdGVkLgogICAgIGlmIChtX3dpZHRoIDwgMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaAppbmRleCBhODhhYTA0Li4y
OWZjMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxTcGFjZS5oCkBAIC0yOCwxNSArMjgsMTUgQEAKIAogI2lmIEVOQUJMRShNQVRITUwp
CiAKLSNpbmNsdWRlICJNYXRoTUxUZXh0RWxlbWVudC5oIgorI2luY2x1ZGUgIk1hdGhNTFNwYWNl
RWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlck1hdGhNTEJsb2NrLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAKIGNsYXNzIFJlbmRlck1hdGhNTFNwYWNlIGZpbmFsIDogcHVibGljIFJl
bmRlck1hdGhNTEJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxTcGFjZShNYXRoTUxU
ZXh0RWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7Ci0gICAgTWF0aE1MVGV4dEVsZW1lbnQm
IGVsZW1lbnQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxNYXRoTUxUZXh0RWxlbWVudCY+KG5vZGVG
b3JOb25Bbm9ueW1vdXMoKSk7IH0KKyAgICBSZW5kZXJNYXRoTUxTcGFjZShNYXRoTUxTcGFjZUVs
ZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOworICAgIE1hdGhNTFNwYWNlRWxlbWVudCYgZWxl
bWVudCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE1hdGhNTFNwYWNlRWxlbWVudCY+KG5vZGVGb3JO
b25Bbm9ueW1vdXMoKSk7IH0KIAogcHJpdmF0ZToKICAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gaXNBbm9ueW1vdXMoKSA/ICJSZW5kZXJNYXRoTUxTcGFj
ZSAoYW5vbnltb3VzKSIgOiAiUmVuZGVyTWF0aE1MU3BhY2UiOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279108</attachid>
            <date>2016-05-17 03:16:00 -0700</date>
            <delta_ts>2016-05-17 06:06:02 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>mspace-attribute-parsing.patch</filename>
            <type>text/plain</type>
            <size>16987</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNDNmZGExMi4uZDAyNDg5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE5ODQsNiArMTk4NCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBtYXRo
bWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCiAgICAgbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVu
dC5jcHAKICAgICBtYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAKKyAgICBtYXRobWwvTWF0
aE1MU3BhY2VFbGVtZW50LmNwcAogICAgIG1hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAKIAog
ICAgIHBhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MRWxlbWVudC5jcHAKaW5kZXggMGNiOTJmZC4uMzFjMDBhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxFbGVtZW50LmNwcApAQCAtMzk2LDYgKzM5NiwxNSBAQCBNYXRoTUxFbGVtZW50
OjpMZW5ndGggTWF0aE1MRWxlbWVudDo6cGFyc2VNYXRoTUxMZW5ndGgoY29uc3QgU3RyaW5nJiBz
dHJpbmcpCiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIAorY29uc3QgTWF0aE1MRWxlbWVudDo6TGVu
Z3RoJiBNYXRoTUxFbGVtZW50OjpjYWNoZWRNYXRoTUxMZW5ndGgoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgTGVuZ3RoJiBsZW5ndGgpCit7CisgICAgaWYgKGxlbmd0aC5kaXJ0eSkgeworICAg
ICAgICBsZW5ndGggPSBwYXJzZU1hdGhNTExlbmd0aChmYXN0R2V0QXR0cmlidXRlKG5hbWUpKTsK
KyAgICAgICAgbGVuZ3RoLmRpcnR5ID0gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBsZW5ndGg7
Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShNQVRITUwpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTEVsZW1lbnQuaAppbmRleCA5M2Y0Y2IwLi42MTdmM2E0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxFbGVtZW50LmgKQEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBM
ZW5ndGggewogICAgICAgICBMZW5ndGhUeXBlIHR5cGUgPSBMZW5ndGhUeXBlOjpQYXJzaW5nRmFp
bGVkOwogICAgICAgICBmbG9hdCB2YWx1ZSA9IDA7CisgICAgICAgIGJvb2wgZGlydHkgPSB0cnVl
OwogICAgIH07CiAgICAgc3RhdGljIExlbmd0aCBwYXJzZU1hdGhNTExlbmd0aChjb25zdCBTdHJp
bmcmKTsKIApAQCAtNzksNiArODAsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBpc1BocmFzaW5n
Q29udGVudChjb25zdCBOb2RlJikgY29uc3Q7CiAgICAgYm9vbCBpc0Zsb3dDb250ZW50KGNvbnN0
IE5vZGUmKSBjb25zdDsKIAorICAgIGNvbnN0IExlbmd0aCYgY2FjaGVkTWF0aE1MTGVuZ3RoKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBMZW5ndGgmKTsKKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlU2VsZWN0ZWRDaGlsZCgpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTFNwYWNlRWxlbWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNTljY2U5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxTcGFjZUVsZW1lbnQuY3BwCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUFUSE1MKQorCisjaW5j
bHVkZSAiTWF0aE1MU3BhY2VFbGVtZW50LmgiCisKKyNpbmNsdWRlICJSZW5kZXJNYXRoTUxTcGFj
ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1l
czsKKworaW5saW5lIE1hdGhNTFNwYWNlRWxlbWVudDo6TWF0aE1MU3BhY2VFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKKyAgICA6IE1hdGhN
TEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCit7Cit9CisKK1JlZjxNYXRoTUxTcGFjZUVsZW1l
bnQ+IE1hdGhNTFNwYWNlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYXRo
TUxTcGFjZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKK30KKwordm9pZCBNYXRoTUxTcGFj
ZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUpCit7CisgICAgaWYgKG5hbWUgPT0gd2lkdGhBdHRyKQorICAg
ICAgICBtX3dpZHRoLmRpcnR5ID0gdHJ1ZTsKKyAgICBlbHNlIGlmIChuYW1lID09IGhlaWdodEF0
dHIpCisgICAgICAgIG1faGVpZ2h0LmRpcnR5ID0gdHJ1ZTsKKyAgICBlbHNlIGlmIChuYW1lID09
IGRlcHRoQXR0cikKKyAgICAgICAgbV9kZXB0aC5kaXJ0eSA9IHRydWU7CisKKyAgICBNYXRoTUxF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7Cit9CisKK1JlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBNYXRoTUxTcGFjZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5k
ZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQoreworICAgIEFTU0VS
VCAoaGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bXNwYWNlVGFnKSk7CisgICAgcmV0dXJuIGNyZWF0
ZVJlbmRlcmVyPFJlbmRlck1hdGhNTFNwYWNlPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOworfQor
Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUFUSE1MKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTFNwYWNlRWxlbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQx
NWM2MDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3Bh
Y2VFbGVtZW50LmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJ
Z2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBNYXRoTUxTcGFjZUVsZW1lbnRfaAorI2RlZmluZSBNYXRoTUxTcGFjZUVsZW1lbnRfaAor
CisjaWYgRU5BQkxFKE1BVEhNTCkKKyNpbmNsdWRlICJNYXRoTUxFbGVtZW50LmgiCisjaW5jbHVk
ZSAiTWF0aE1MTmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNYXRoTUxT
cGFjZUVsZW1lbnQgZmluYWwgOiBwdWJsaWMgTWF0aE1MRWxlbWVudCB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxNYXRoTUxTcGFjZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCYpOworICAgIGNvbnN0IExlbmd0aCYgd2lkdGgoKSB7IHJldHVy
biBjYWNoZWRNYXRoTUxMZW5ndGgoTWF0aE1MTmFtZXM6OndpZHRoQXR0ciwgbV93aWR0aCk7IH0K
KyAgICBjb25zdCBMZW5ndGgmIGhlaWdodCgpIHsgcmV0dXJuIGNhY2hlZE1hdGhNTExlbmd0aChN
YXRoTUxOYW1lczo6aGVpZ2h0QXR0ciwgbV9oZWlnaHQpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBk
ZXB0aCgpIHsgcmV0dXJuIGNhY2hlZE1hdGhNTExlbmd0aChNYXRoTUxOYW1lczo6ZGVwdGhBdHRy
LCBtX2RlcHRoKTsgfQorCitwcml2YXRlOgorICAgIE1hdGhNTFNwYWNlRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOworICAgIGJvb2wgaXNQcmVzZW50YXRp
b25NYXRoTUwoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5hbDsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKKworICAgIExlbmd0
aCBtX3dpZHRoOworICAgIExlbmd0aCBtX2hlaWdodDsKKyAgICBMZW5ndGggbV9kZXB0aDsKK307
CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNQVRITUwpCisjZW5kaWYgLy8gTWF0aE1MU3BhY2VF
bGVtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwCmlu
ZGV4IGMxZGM0ZjcuLjJiMmQ4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxUZXh0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRl
eHRFbGVtZW50LmNwcApAQCAtMzIsNyArMzIsNiBAQAogCiAjaW5jbHVkZSAiTWF0aE1MTmFtZXMu
aCIKICNpbmNsdWRlICJSZW5kZXJNYXRoTUxPcGVyYXRvci5oIgotI2luY2x1ZGUgIlJlbmRlck1h
dGhNTFNwYWNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyTWF0aE1MVG9rZW4uaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNzksOCArNzgsNiBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0
aE1MVGV4dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmCiB7CiAg
ICAgaWYgKGhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1vVGFnKSkKICAgICAgICAgcmV0dXJuIGNy
ZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTE9wZXJhdG9yPigqdGhpcywgV1RGTW92ZShzdHlsZSkp
OwotICAgIGlmIChoYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptc3BhY2VUYWcpKQotICAgICAgICBy
ZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MU3BhY2U+KCp0aGlzLCBXVEZNb3ZlKHN0
eWxlKSk7CiAgICAgaWYgKGhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6OmFubm90YXRpb25UYWcpKQog
ICAgICAgICByZXR1cm4gTWF0aE1MRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFdURk1v
dmUoc3R5bGUpLCBpbnNlcnRpb25Qb3NpdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9tYXRodGFncy5pbiBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9tYXRodGFncy5p
bgppbmRleCA1ZDA4MWQxLi40ZjQwODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvbWF0aHRhZ3MuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL21hdGh0YWdzLmluCkBA
IC0yNCw3ICsyNCw3IEBAIG1uIGludGVyZmFjZU5hbWU9TWF0aE1MVGV4dEVsZW1lbnQKIG1vIGlu
dGVyZmFjZU5hbWU9TWF0aE1MVGV4dEVsZW1lbnQKIG10ZXh0IGludGVyZmFjZU5hbWU9TWF0aE1M
VGV4dEVsZW1lbnQKIG1zIGludGVyZmFjZU5hbWU9TWF0aE1MVGV4dEVsZW1lbnQKLW1zcGFjZSBp
bnRlcmZhY2VOYW1lPU1hdGhNTFRleHRFbGVtZW50Cittc3BhY2UgaW50ZXJmYWNlTmFtZT1NYXRo
TUxTcGFjZUVsZW1lbnQKIG1zdWIgaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWluZXJF
bGVtZW50CiBtc3VwIGludGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudAog
bXRhYmxlIGludGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNw
cAppbmRleCA1MTY0ZTc2Li4yNDI4M2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcApAQCAtMTM1LDQ4ICsxMzUsNDMg
QEAgdm9pZCBSZW5kZXJNYXRoTUxCbG9jazo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKERFQlVHX01BVEhf
TEFZT1VUKQogCi1ib29sIHBhcnNlTWF0aE1MTGVuZ3RoKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBM
YXlvdXRVbml0JiBsZW5ndGhWYWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBib29sIGFs
bG93TmVnYXRpdmUpCitMYXlvdXRVbml0IHRvVXNlclVuaXRzKGNvbnN0IE1hdGhNTEVsZW1lbnQ6
Okxlbmd0aCYgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IExheW91dFVu
aXQmIHJlZmVyZW5jZVZhbHVlKQogewotICAgIE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCBsZW5ndGgg
PSBNYXRoTUxFbGVtZW50OjpwYXJzZU1hdGhNTExlbmd0aChzdHJpbmcpOwotCi0gICAgTGF5b3V0
VW5pdCB2YWx1ZSA9IGxlbmd0aFZhbHVlOwogICAgIHN3aXRjaCAobGVuZ3RoLnR5cGUpIHsKICAg
ICBjYXNlIE1hdGhNTEVsZW1lbnQ6Okxlbmd0aFR5cGU6OkNtOgotICAgICAgICB2YWx1ZSA9IGxl
bmd0aC52YWx1ZSAqIGNzc1BpeGVsc1BlckluY2ggLyAyLjU0ZjsKLSAgICAgICAgYnJlYWs7Cisg
ICAgICAgIHJldHVybiBsZW5ndGgudmFsdWUgKiBjc3NQaXhlbHNQZXJJbmNoIC8gMi41NGY7CiAg
ICAgY2FzZSBNYXRoTUxFbGVtZW50OjpMZW5ndGhUeXBlOjpFbToKLSAgICAgICAgdmFsdWUgPSBs
ZW5ndGgudmFsdWUgKiBzdHlsZS0+Zm9udENhc2NhZGUoKS5zaXplKCk7Ci0gICAgICAgIGJyZWFr
OworICAgICAgICByZXR1cm4gbGVuZ3RoLnZhbHVlICogc3R5bGUuZm9udENhc2NhZGUoKS5zaXpl
KCk7CiAgICAgY2FzZSBNYXRoTUxFbGVtZW50OjpMZW5ndGhUeXBlOjpFeDoKLSAgICAgICAgdmFs
dWUgPSBsZW5ndGgudmFsdWUgKiBzdHlsZS0+Zm9udE1ldHJpY3MoKS54SGVpZ2h0KCk7Ci0gICAg
ICAgIGJyZWFrOworICAgICAgICByZXR1cm4gbGVuZ3RoLnZhbHVlICogc3R5bGUuZm9udE1ldHJp
Y3MoKS54SGVpZ2h0KCk7CiAgICAgY2FzZSBNYXRoTUxFbGVtZW50OjpMZW5ndGhUeXBlOjpJbjoK
LSAgICAgICAgdmFsdWUgPSBsZW5ndGgudmFsdWUgKiBjc3NQaXhlbHNQZXJJbmNoOwotICAgICAg
ICBicmVhazsKKyAgICAgICAgcmV0dXJuIGxlbmd0aC52YWx1ZSAqIGNzc1BpeGVsc1BlckluY2g7
CiAgICAgY2FzZSBNYXRoTUxFbGVtZW50OjpMZW5ndGhUeXBlOjpNYXRoVW5pdDoKLSAgICAgICAg
dmFsdWUgPSBsZW5ndGgudmFsdWUgKiBzdHlsZS0+Zm9udENhc2NhZGUoKS5zaXplKCkgLyAxODsK
LSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBsZW5ndGgudmFsdWUgKiBzdHlsZS5mb250
Q2FzY2FkZSgpLnNpemUoKSAvIDE4OwogICAgIGNhc2UgTWF0aE1MRWxlbWVudDo6TGVuZ3RoVHlw
ZTo6TW06Ci0gICAgICAgIHZhbHVlID0gbGVuZ3RoLnZhbHVlICogY3NzUGl4ZWxzUGVySW5jaCAv
IDI1LjRmOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIGxlbmd0aC52YWx1ZSAqIGNz
c1BpeGVsc1BlckluY2ggLyAyNS40ZjsKICAgICBjYXNlIE1hdGhNTEVsZW1lbnQ6Okxlbmd0aFR5
cGU6OlBjOgotICAgICAgICB2YWx1ZSA9IGxlbmd0aC52YWx1ZSAqIGNzc1BpeGVsc1BlckluY2gg
LyA2OwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIGxlbmd0aC52YWx1ZSAqIGNzc1Bp
eGVsc1BlckluY2ggLyA2OwogICAgIGNhc2UgTWF0aE1MRWxlbWVudDo6TGVuZ3RoVHlwZTo6UGVy
Y2VudGFnZToKLSAgICAgICAgdmFsdWUgKj0gbGVuZ3RoLnZhbHVlIC8gMTAwOwotICAgICAgICBi
cmVhazsKKyAgICAgICAgcmV0dXJuIHJlZmVyZW5jZVZhbHVlICogbGVuZ3RoLnZhbHVlIC8gMTAw
OwogICAgIGNhc2UgTWF0aE1MRWxlbWVudDo6TGVuZ3RoVHlwZTo6UHQ6Ci0gICAgICAgIHZhbHVl
ID0gbGVuZ3RoLnZhbHVlICogY3NzUGl4ZWxzUGVySW5jaCAvIDcyOwotICAgICAgICBicmVhazsK
KyAgICAgICAgcmV0dXJuIGxlbmd0aC52YWx1ZSAqIGNzc1BpeGVsc1BlckluY2ggLyA3MjsKICAg
ICBjYXNlIE1hdGhNTEVsZW1lbnQ6Okxlbmd0aFR5cGU6OlB4OgotICAgICAgICB2YWx1ZSA9IGxl
bmd0aC52YWx1ZTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBsZW5ndGgudmFsdWU7
CiAgICAgY2FzZSBNYXRoTUxFbGVtZW50OjpMZW5ndGhUeXBlOjpVbml0TGVzczoKLSAgICAgICAg
dmFsdWUgKj0gbGVuZ3RoLnZhbHVlOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHJl
ZmVyZW5jZVZhbHVlICogbGVuZ3RoLnZhbHVlOwogICAgIGNhc2UgTWF0aE1MRWxlbWVudDo6TGVu
Z3RoVHlwZTo6UGFyc2luZ0ZhaWxlZDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXR1cm4gcmVmZXJlbmNlVmFsdWU7CiAgICAgfQorfQorCitib29sIHBhcnNlTWF0aE1MTGVuZ3Ro
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBMYXlvdXRVbml0JiBsZW5ndGhWYWx1ZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlLCBib29sIGFsbG93TmVnYXRpdmUpCit7CisgICAgTWF0aE1MRWxlbWVu
dDo6TGVuZ3RoIGxlbmd0aCA9IE1hdGhNTEVsZW1lbnQ6OnBhcnNlTWF0aE1MTGVuZ3RoKHN0cmlu
Zyk7CisgICAgaWYgKGxlbmd0aC50eXBlID09IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aFR5cGU6OlBh
cnNpbmdGYWlsZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIExheW91dFVuaXQgdmFs
dWUgPSB0b1VzZXJVbml0cyhsZW5ndGgsICpzdHlsZSwgbGVuZ3RoVmFsdWUpOwogCiAgICAgaWYg
KCFhbGxvd05lZ2F0aXZlICYmIHZhbHVlIDwgMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9j
ay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5o
CmluZGV4IDRmOTZiNGYuLjA0NzAxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNs
dWRlICJSZW5kZXJGbGV4aWJsZUJveC5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlLmgiCiAjaW5j
bHVkZSAiU3R5bGVJbmhlcml0ZWREYXRhLmgiCisjaW5jbHVkZSAiTWF0aE1MRWxlbWVudC5oIgog
CiAjZGVmaW5lIEVOQUJMRV9ERUJVR19NQVRIX0xBWU9VVCAwCiAKQEAgLTk0LDYgKzk1LDcgQEAg
cHJpdmF0ZToKIAogLy8gUGFyc2luZyBmdW5jdGlvbnMgZm9yIE1hdGhNTCBMZW5ndGggdmFsdWVz
CiBib29sIHBhcnNlTWF0aE1MTGVuZ3RoKGNvbnN0IFN0cmluZyYsIExheW91dFVuaXQmLCBjb25z
dCBSZW5kZXJTdHlsZSosIGJvb2wgYWxsb3dOZWdhdGl2ZSA9IHRydWUpOworTGF5b3V0VW5pdCB0
b1VzZXJVbml0cyhjb25zdCBNYXRoTUxFbGVtZW50OjpMZW5ndGgmIGxlbmd0aCwgY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBMYXlvdXRVbml0JiByZWZlcmVuY2VWYWx1ZSk7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcAppbmRleCBlY2I4Y2JmLi4yZmJmNThlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNw
YWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFNwYWNlLmNwcApAQCAtMzYsMTEgKzM2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAog
dXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOwogCi1SZW5kZXJNYXRoTUxTcGFjZTo6UmVuZGVy
TWF0aE1MU3BhY2UoTWF0aE1MVGV4dEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5
bGUpCitSZW5kZXJNYXRoTUxTcGFjZTo6UmVuZGVyTWF0aE1MU3BhY2UoTWF0aE1MU3BhY2VFbGVt
ZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MQmxv
Y2soZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCi0gICAgLCBtX3dpZHRoKDApCi0gICAgLCBtX2hl
aWdodCgwKQotICAgICwgbV9kZXB0aCgwKQogewogfQogCkBAIC00OCwzMyArNDUsMzMgQEAgdm9p
ZCBSZW5kZXJNYXRoTUxTcGFjZTo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQogewog
ICAgIEFTU0VSVChwcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkoKSk7CiAKLSAgICBtX21pblBy
ZWZlcnJlZExvZ2ljYWxXaWR0aCA9IG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoID0gbV93aWR0
aDsKKyAgICBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IG1fbWF4UHJlZmVycmVkTG9naWNh
bFdpZHRoID0gc3BhY2VXaWR0aCgpOwogCiAgICAgc2V0UHJlZmVycmVkTG9naWNhbFdpZHRoc0Rp
cnR5KGZhbHNlKTsKIH0KIAotdm9pZCBSZW5kZXJNYXRoTUxTcGFjZTo6dXBkYXRlRnJvbUVsZW1l
bnQoKQorTGF5b3V0VW5pdCBSZW5kZXJNYXRoTUxTcGFjZTo6c3BhY2VXaWR0aCgpIGNvbnN0CiB7
Ci0gICAgY29uc3QgYXV0byYgc3BhY2VFbGVtZW50ID0gZWxlbWVudCgpOwotCi0gICAgLy8gVGhp
cyBwYXJzZXMgdGhlIG1zcGFjZSBhdHRyaWJ1dGVzLCB1c2luZyAwIGFzIHRoZSBkZWZhdWx0IHZh
bHVlcy4KLSAgICBtX3dpZHRoID0gMDsKLSAgICBtX2hlaWdodCA9IDA7Ci0gICAgbV9kZXB0aCA9
IDA7Ci0gICAgcGFyc2VNYXRoTUxMZW5ndGgoc3BhY2VFbGVtZW50LmdldEF0dHJpYnV0ZShNYXRo
TUxOYW1lczo6d2lkdGhBdHRyKSwgbV93aWR0aCwgJnN0eWxlKCkpOwotICAgIHBhcnNlTWF0aE1M
TGVuZ3RoKHNwYWNlRWxlbWVudC5nZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OmhlaWdodEF0dHIp
LCBtX2hlaWdodCwgJnN0eWxlKCkpOwotICAgIHBhcnNlTWF0aE1MTGVuZ3RoKHNwYWNlRWxlbWVu
dC5nZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OmRlcHRoQXR0ciksIG1fZGVwdGgsICZzdHlsZSgp
KTsKKyAgICBhdXRvJiBzcGFjZUVsZW1lbnQgPSBlbGVtZW50KCk7CisgICAgLy8gRklYTUU6IE5l
Z2F0aXZlIHdpZHRoIHZhbHVlcyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQuCisgICAgcmV0dXJuIHN0
ZDo6bWF4PExheW91dFVuaXQ+KDAsIHRvVXNlclVuaXRzKHNwYWNlRWxlbWVudC53aWR0aCgpLCBz
dHlsZSgpLCAwKSk7Cit9CiAKLSAgICAvLyBGSVhNRTogTmVnYXRpdmUgd2lkdGggdmFsdWVzIHNo
b3VsZCBiZSBhY2NlcHRlZC4KLSAgICBpZiAobV93aWR0aCA8IDApCi0gICAgICAgIG1fd2lkdGgg
PSAwOwordm9pZCBSZW5kZXJNYXRoTUxTcGFjZTo6Z2V0U3BhY2VIZWlnaHRBbmREZXB0aChMYXlv
dXRVbml0JiBoZWlnaHQsIExheW91dFVuaXQmIGRlcHRoKSBjb25zdAoreworICAgIGF1dG8mIHNw
YWNlRWxlbWVudCA9IGVsZW1lbnQoKTsKKyAgICBoZWlnaHQgPSB0b1VzZXJVbml0cyhzcGFjZUVs
ZW1lbnQuaGVpZ2h0KCksIHN0eWxlKCksIDApOworICAgIGRlcHRoID0gdG9Vc2VyVW5pdHMoc3Bh
Y2VFbGVtZW50LmRlcHRoKCksIHN0eWxlKCksIDApOwogCiAgICAgLy8gSWYgdGhlIHRvdGFsIGhl
aWdodCBpcyBuZWdhdGl2ZSwgc2V0IHZlcnRpY2FsIGRpbWVuc2lvbnMgdG8gMC4KLSAgICBpZiAo
bV9oZWlnaHQgKyBtX2RlcHRoIDwgMCkgewotICAgICAgICBtX2hlaWdodCA9IDA7Ci0gICAgICAg
IG1fZGVwdGggPSAwOworICAgIGlmIChoZWlnaHQgKyBkZXB0aCA8IDApIHsKKyAgICAgICAgaGVp
Z2h0ID0gMDsKKyAgICAgICAgZGVwdGggPSAwOwogICAgIH0KK30KIAordm9pZCBSZW5kZXJNYXRo
TUxTcGFjZTo6dXBkYXRlRnJvbUVsZW1lbnQoKQorewogICAgIHNldE5lZWRzTGF5b3V0QW5kUHJl
ZldpZHRoc1JlY2FsYygpOwogfQogCkBAIC04NSw4ICs4MiwxMCBAQCB2b2lkIFJlbmRlck1hdGhN
TFNwYWNlOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQpCiAg
ICAgaWYgKCFyZWxheW91dENoaWxkcmVuICYmIHNpbXBsaWZpZWRMYXlvdXQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgc2V0TG9naWNhbFdpZHRoKG1fd2lkdGgpOwotICAgIHNldExvZ2ljYWxI
ZWlnaHQobV9oZWlnaHQgKyBtX2RlcHRoKTsKKyAgICBzZXRMb2dpY2FsV2lkdGgoc3BhY2VXaWR0
aCgpKTsKKyAgICBMYXlvdXRVbml0IGhlaWdodCwgZGVwdGg7CisgICAgZ2V0U3BhY2VIZWlnaHRB
bmREZXB0aChoZWlnaHQsIGRlcHRoKTsKKyAgICBzZXRMb2dpY2FsSGVpZ2h0KGhlaWdodCArIGRl
cHRoKTsKIAogICAgIGNsZWFyTmVlZHNMYXlvdXQoKTsKIH0KQEAgLTk5LDcgKzk4LDkgQEAgdm9p
ZCBSZW5kZXJNYXRoTUxTcGFjZTo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYs
IGNvbnN0IFJlbmRlclN0eWxlKgogCiBPcHRpb25hbDxpbnQ+IFJlbmRlck1hdGhNTFNwYWNlOjpm
aXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE9wdGlvbmFsPGludD4obV9o
ZWlnaHQpOworICAgIExheW91dFVuaXQgaGVpZ2h0LCBkZXB0aDsKKyAgICBnZXRTcGFjZUhlaWdo
dEFuZERlcHRoKGhlaWdodCwgZGVwdGgpOworICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KGhlaWdo
dCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MU3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MU3BhY2UuaAppbmRleCBjMzA5MTI2Li5mZDRlNTE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oCkBAIC0yOCwx
NSArMjgsMTUgQEAKIAogI2lmIEVOQUJMRShNQVRITUwpCiAKLSNpbmNsdWRlICJNYXRoTUxUZXh0
RWxlbWVudC5oIgorI2luY2x1ZGUgIk1hdGhNTFNwYWNlRWxlbWVudC5oIgogI2luY2x1ZGUgIlJl
bmRlck1hdGhNTEJsb2NrLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIFJl
bmRlck1hdGhNTFNwYWNlIGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIHB1Ymxp
YzoKLSAgICBSZW5kZXJNYXRoTUxTcGFjZShNYXRoTUxUZXh0RWxlbWVudCYsIFJlbmRlclN0eWxl
JiYpOwotICAgIE1hdGhNTFRleHRFbGVtZW50JiBlbGVtZW50KCkgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8TWF0aE1MVGV4dEVsZW1lbnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CisgICAgUmVu
ZGVyTWF0aE1MU3BhY2UoTWF0aE1MU3BhY2VFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CisgICAg
TWF0aE1MU3BhY2VFbGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
TWF0aE1MU3BhY2VFbGVtZW50Jj4obm9kZUZvck5vbkFub255bW91cygpKTsgfQogCiBwcml2YXRl
OgogICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBpc0Fu
b255bW91cygpID8gIlJlbmRlck1hdGhNTFNwYWNlIChhbm9ueW1vdXMpIiA6ICJSZW5kZXJNYXRo
TUxTcGFjZSI7IH0KQEAgLTQ4LDkgKzQ4LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGxheW91dEJs
b2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9
IDApIGZpbmFsOwogICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBm
aW5hbDsKIAotICAgIExheW91dFVuaXQgbV93aWR0aDsKLSAgICBMYXlvdXRVbml0IG1faGVpZ2h0
OwotICAgIExheW91dFVuaXQgbV9kZXB0aDsKKyAgICBMYXlvdXRVbml0IHNwYWNlV2lkdGgoKSBj
b25zdDsKKyAgICB2b2lkIGdldFNwYWNlSGVpZ2h0QW5kRGVwdGgoTGF5b3V0VW5pdCYgaGVpZ2h0
LCBMYXlvdXRVbml0JiBkZXB0aCkgY29uc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279113</attachid>
            <date>2016-05-17 05:30:35 -0700</date>
            <delta_ts>2016-05-17 05:32:07 -0700</delta_ts>
            <desc>Patch for EWS testing</desc>
            <filename>0002-mathml-space.patch</filename>
            <type>text/plain</type>
            <size>21955</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">RnJvbSA3MGMyNzQ5Y2E1NWVkYzM5NDY0NDk1NzI1YzA4OWE2YzA3YjBkNmM1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBGcmVkZXJpYyBXYW5nIDxmcmVkLndhbmdAZnJlZS5mcj4KRGF0
ZTogVHVlLCAxNyBNYXkgMjAxNiAxNDowNjo0NyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMi8yXSBt
YXRobWwtc3BhY2UKCi0tLQogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgICAgICAgICAg
ICAgICAgICAgICAgfCAgMSArCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IDM5ICsrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiAgIHwgIDggKysrCiBTb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MRWxlbWVudC5jcHAgICAgICAgICAgICB8ICA5ICsrKwogU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTEVsZW1lbnQuaCAgICAgICAgICAgICAgfCAgMyArCiBTb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcCAgICAgICB8IDY4ICsrKysrKysrKysrKysr
KysrKysrKysKIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuaCAgICAg
ICAgIHwgNTYgKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
VGV4dEVsZW1lbnQuY3BwICAgICAgICB8ICAzIC0KIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9tYXRo
dGFncy5pbiAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIC4uLi9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwIHwgNDggKysrKysrKy0tLS0tLS0tCiAuLi4vV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmggICB8IDEyICsrLS0KIDEx
IGZpbGVzIGNoYW5nZWQsIDIxMiBpbnNlcnRpb25zKCspLCAzNyBkZWxldGlvbnMoLSkKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNw
cAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVs
ZW1lbnQuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNDNmZGExMi4uZDAyNDg5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTE5ODQsNiArMTk4NCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMK
ICAgICBtYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCiAgICAgbWF0aG1sL01hdGhNTE1lbmNs
b3NlRWxlbWVudC5jcHAKICAgICBtYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAKKyAgICBt
YXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcAogICAgIG1hdGhtbC9NYXRoTUxUZXh0RWxlbWVu
dC5jcHAKIAogICAgIHBhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OWNmMDZiOC4uODkxODY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE2LTA1LTE3
ICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLm9yZz4KKworICAgICAgICBNb3ZlIHBhcnNp
bmcgb2YgbXNwYWNlIGF0dHJpYnV0ZXMgdG8gYSBNYXRoTUxTcGFjZUVsZW1lbnQgY2xhc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Njc5NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cywgYWxyZWFkeSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6IEFkZCBNYXRoTUxTcGFjZUVsZW1lbnQgdG8gdGhlIGJ1aWxkIHN5c3RlbS4KKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAg
ICAqIG1hdGhtbC9NYXRoTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVs
ZW1lbnQ6OmNhY2hlZE1hdGhNTExlbmd0aCk6IEhlbHBlciBmdW5jdGlvbiB0byByZXR1cm5lZCB0
aGUgY2FjaGVkIHBhcnNlZAorICAgICAgICB2YWx1ZSBvZiBhIE1hdGhNTCBsZW5ndGggYW5kIHBh
cnNpbmcgdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIHZhbHVlIGlmIHRoZSBjYWNoZSBpcyBk
aXJ0eS4KKyAgICAgICAgKiBtYXRobWwvTWF0aE1MRWxlbWVudC5oOiBBZGQgYSBkaXJ0eSBib29s
ZWFuIHRvIE1hdGhNTCBMZW5ndGggc3RydWN0dXJlLiBEZWNsYXJlIGNhY2hlZE1hdGhNTExlbmd0
aC4KKyAgICAgICAgKiBtYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcDogTmV3IGNsYXNzIGZv
ciB0aGUgPG1zcGFjZT4gZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFNwYWNlRWxl
bWVudDo6TWF0aE1MU3BhY2VFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFNwYWNl
RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFNwYWNlRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUpOiBNYWtlIHdpZHRoLCBoZWlnaHQsIGRlcHRoIGF0dHJpYnV0ZXMgZGly
dHkuCisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxTcGFjZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcik6CisgICAgICAgICogbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5oOiBOZXcgY2xh
c3MgZm9yIHRoZSA8bXNwYWNlPiBlbGVtZW50LgorICAgICAgICBXZSBkZWZpbmUgTWF0aE1MIGxl
bmd0aHMgZm9yIHdpZHRoLCBoZWlnaHQgYW5kIGRlcHRoIGF0dHJpYnV0ZXMgYXJlIG9uIHRoZSBj
bGFzcyBhbmQgZXhwb3NlCisgICAgICAgIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgaGVscGVyIGZ1
bmN0aW9ucyB2aWEgbWVtb2l6YXRpb24uCisgICAgICAgICogbWF0aG1sL01hdGhNTFRleHRFbGVt
ZW50LmNwcDogUmVtb3ZlIGhhbmRsaW5nIG9mIG1zcGFjZSBmcm9tIHRoaXMgY2xhc3MuCisgICAg
ICAgIChXZWJDb3JlOjpNYXRoTUxUZXh0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToK
KyAgICAgICAgKiBtYXRobWwvbWF0aHRhZ3MuaW46IENoYW5nZSB0aGUgaW50ZXJmYWNlIGZvciBt
c3BhY2UgdG8gdXNlIHRoZSBuZXcgY2xhc3MuCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxTcGFjZS5jcHA6IERvIG5vdCBzdG9yZSB3aWR0aC9oZWlnaHQvZGVwdGggdmFs
dWVzIG9uIHRoZQorICAgICAgICByZW5kZXJlciBhbmQgaW5zdGVhZCBqdXN0IHVzZSB0aGUgY29y
cmVzcG9uZGluZyBNYXRoTUwgbGVuZ3RocyBvbiB0aGUgZWxlbWVudCBjbGFzcy4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck1hdGhNTFNwYWNlOjpSZW5kZXJNYXRoTUxTcGFjZSk6IFVzZSBNYXRo
TUxTcGFjZUVsZW1lbnQgYW5kIHJlbW92ZSBtZW1iZXIKKyAgICAgICAgaW5pdGlhbGl6YXRpb24u
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTcGFjZTo6Y29tcHV0ZVByZWZlcnJlZExv
Z2ljYWxXaWR0aHMpOiBVc2Ugc3BhY2VXaWR0aCgpLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TWF0aE1MU3BhY2U6OnNwYWNlV2lkdGgpOiBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSB0aGUg
d2lkdGggYXR0cmlidXRlIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU3Bh
Y2U6OmdldFNwYWNlSGVpZ2h0QW5kRGVwdGgpOiBEaXR0byBmb3IgaGVpZ2h0IGFuZCBkZXB0aC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFNwYWNlOjpsYXlvdXRCbG9jayk6IFVzZSB0
aGUgaGVscGVyIGZ1bmN0aW9ucyB0byBnZXQgdGhlIG1zcGFjZSBtZXRyaWNzLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTWF0aE1MU3BhY2U6OmZpcnN0TGluZUJhc2VsaW5lKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTcGFjZTo6dXBkYXRlRnJvbUVsZW1lbnQpOiBE
ZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaDog
VXNlIE1hdGhNTFNwYWNlRWxlbWVudCwgcmVwbGFjZSBtZW1iZXJzIHdpdGggaGVscGVyCisgICAg
ICAgIGZ1bmN0aW9ucyBhbmQgYW5kIG1ha2UgZWxlbWVudCgpIHVzYWJsZSBmcm9tIGEgY29uc3Qg
aW5zdGFuY2UuCisKIDIwMTYtMDUtMTYgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEub3Jn
PgogCiAgICAgICAgIENyZWF0ZSBhIE1hdGhNTExlbmd0aCBzdHJ1Y3QgdG8gaGFuZGxlIHRoZSBw
YXJzaW5nIG9mIE1hdGhNTCBsZW5ndGguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzQ0ZGE0Ny4uNjJlYzc3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjgz
NSw2ICs2ODM1LDggQEAKIAkJRjk4RkZGNDQxMUEyNjc2MjAwRjU0OEU4IC8qIENTU09NVXRpbHMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjk4RkZG
NDIxMUEyNjc2MjAwRjU0OEU4IC8qIENTU09NVXRpbHMuY3BwICovOyB9OwogCQlGOThGRkY0NTEx
QTI2NzYyMDBGNTQ4RTggLyogQ1NTT01VdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjk4RkZGNDMxMUEyNjc2MjAwRjU0OEU4IC8qIENTU09NVXRp
bHMuaCAqLzsgfTsKIAkJRjlGMEVEN0EwREI1MENBMjAwRDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0
UHJvZ3Jlc3NFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjlGMEVENzcwREI1MENBMjAwRDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NF
dmVudC5oICovOyB9OworCQk0RkE2NUE2QjExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MU3BhY2VF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRGQTY1QTY5MTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxTcGFjZUVsZW1lbnQuY3BwICovOyB9
OworCQk0RkE2NUE2QzExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MU3BhY2VFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RkE2NUE2QTExMDhB
QkVEMDAyNjE1RTAgLyogTWF0aE1MU3BhY2VFbGVtZW50LmggKi87IH07CiAJCUZBNjU0QTZCMTEw
OEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQTY1NEE2OTExMDhBQkVEMDAyNjE1RTAgLyog
TWF0aE1MVGV4dEVsZW1lbnQuY3BwICovOyB9OwogCQlGQTY1NEE2QzExMDhBQkVEMDAyNjE1RTAg
LyogTWF0aE1MVGV4dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZBNjU0QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVu
dC5oICovOyB9OwogCQlGQUJFNzJGNDEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUJFNzJF
RDEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5jcHAgKi87IH07CkBAIC0xNDkyOSw2
ICsxNDkzMSw4IEBACiAJCUY5RjBFRDc4MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVz
dFByb2dyZXNzRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBYTUxIdHRwUmVxdWVz
dFByb2dyZXNzRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQTY1NEE2
MzExMDhBQkI3MDAyNjE1RTAgLyogbWF0aG1sLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRo
ID0gbWF0aG1sLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkE2NTRBNjcxMTA4
QUJFMjAwMjYxNUUwIC8qIG1hdGhhdHRycy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBtYXRo
YXR0cnMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRGQTY1QTY5MTEwOEFCRUQw
MDI2MTVFMCAvKiBNYXRoTUxTcGFjZUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWF0aE1MU3BhY2VFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNEZBNjVBNkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxTcGFjZUVsZW1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkE2NTRBNjkxMTA4QUJFRDAwMjYxNUUw
IC8qIE1hdGhNTFRleHRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1hdGhNTFRleHRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkE2NTRBNkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTFRleHRFbGVtZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBNkU0NjZGQ0QwNDE4QTk5NjZBNUI2MCAvKiBETlNSZXNv
bHZlUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE5TUmVzb2x2ZVF1
ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDY0Niw2ICsyNDY1MCw4IEBA
CiAJCQkJQ0U2RDg5Mjk0QzdBQUNFMEFEODlCM0REIC8qIE1hdGhNTE1lbmNsb3NlRWxlbWVudC5o
ICovLAogCQkJCUY3NUEwNTlBRjE3MEQ4RkFBNUI4Q0FCRSAvKiBNYXRoTUxTZWxlY3RFbGVtZW50
LmNwcCAqLywKIAkJCQk1OTc4MDg0OUQ0MUU2RjY1RDgxMTk4QkMgLyogTWF0aE1MU2VsZWN0RWxl
bWVudC5oICovLAorCQkJCTRGQTY1QTY5MTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxTcGFjZUVs
ZW1lbnQuY3BwICovLAorCQkJCTRGQTY1QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxTcGFj
ZUVsZW1lbnQuaCAqLywKIAkJCQlGQTY1NEE2OTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4
dEVsZW1lbnQuY3BwICovLAogCQkJCUZBNjU0QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxU
ZXh0RWxlbWVudC5oICovLAogCQkJCUZBQkU3MkYzMTA1OUMxRUIwMEQ5OTlERCAvKiBtYXRodGFn
cy5pbiAqLywKQEAgLTI3MTY3LDYgKzI3MTczLDcgQEAKIAkJCQlGQUJFNzJGOTEwNTlDMUVCMDBE
OTk5REQgLyogTWF0aE1MTWF0aEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0QTI4QUFG
MTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5
MDQ2RTAxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNEZBNjVBNkMxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkE2NTRBNkMxMTA4QUJFRDAwMjYxNUUwIC8qIE1h
dGhNTFRleHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUQ1REMyQzBGNDIzQTczMDA4
RjIwRkQgLyogTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ5RTkxMUM3MEVGODZENDcwMDlEMENBRiAvKiBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaCBp
biBIZWFkZXJzICovLApAQCAtMzA5NTIsNiArMzA5NTksNyBAQAogCQkJCUZBQkU3MkZFMTA1OUMy
MTEwMEQ5OTlERCAvKiBNYXRoTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzkwNDZE
RjEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUZFRDQ4MzkwQ0VENjZDMzI1NUY3MkM1OSAvKiBNYXRoTUxTZWxlY3RFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTRGQTY1QTZCMTEwOEFCRUQwMDI2MTVFMCAvKiBN
YXRoTUxTcGFjZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkE2NTRBNkIxMTA4QUJF
RDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5
RDVEQzJCMEY0MjNBNzMwMDhGMjBGRCAvKiBNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0OUU5MTFDNjBFRjg2RDQ3MDA5RDBDQUYgLyogTWF0cml4VHJh
bnNmb3JtT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTEVsZW1lbnQuY3BwCmluZGV4IDBjYjkyZmQuLjMxYzAwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MRWxlbWVudC5jcHAKQEAgLTM5Niw2ICszOTYsMTUgQEAgTWF0aE1MRWxlbWVu
dDo6TGVuZ3RoIE1hdGhNTEVsZW1lbnQ6OnBhcnNlTWF0aE1MTGVuZ3RoKGNvbnN0IFN0cmluZyYg
c3RyaW5nKQogICAgIHJldHVybiBsZW5ndGg7CiB9CiAKK2NvbnN0IE1hdGhNTEVsZW1lbnQ6Okxl
bmd0aCYgTWF0aE1MRWxlbWVudDo6Y2FjaGVkTWF0aE1MTGVuZ3RoKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIExlbmd0aCYgbGVuZ3RoKQoreworICAgIGlmIChsZW5ndGguZGlydHkpIHsKKyAg
ICAgICAgbGVuZ3RoID0gcGFyc2VNYXRoTUxMZW5ndGgoZmFzdEdldEF0dHJpYnV0ZShuYW1lKSk7
CisgICAgICAgIGxlbmd0aC5kaXJ0eSA9IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gbGVuZ3Ro
OworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTUFUSE1MKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxFbGVtZW50LmgKaW5kZXggOTNmNGNiMC4uNjE3ZjNhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MRWxlbWVudC5oCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3Qg
TGVuZ3RoIHsKICAgICAgICAgTGVuZ3RoVHlwZSB0eXBlID0gTGVuZ3RoVHlwZTo6UGFyc2luZ0Zh
aWxlZDsKICAgICAgICAgZmxvYXQgdmFsdWUgPSAwOworICAgICAgICBib29sIGRpcnR5ID0gdHJ1
ZTsKICAgICB9OwogICAgIHN0YXRpYyBMZW5ndGggcGFyc2VNYXRoTUxMZW5ndGgoY29uc3QgU3Ry
aW5nJik7CiAKQEAgLTc5LDYgKzgwLDggQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaXNQaHJhc2lu
Z0NvbnRlbnQoY29uc3QgTm9kZSYpIGNvbnN0OwogICAgIGJvb2wgaXNGbG93Q29udGVudChjb25z
dCBOb2RlJikgY29uc3Q7CiAKKyAgICBjb25zdCBMZW5ndGgmIGNhY2hlZE1hdGhNTExlbmd0aChj
b25zdCBRdWFsaWZpZWROYW1lJiwgTGVuZ3RoJik7CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVNlbGVjdGVkQ2hpbGQoKSB7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxTcGFjZUVsZW1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjhlNzJhYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MU3BhY2VFbGVtZW50LmNwcApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1BVEhNTCkKKyNpbmNs
dWRlICJNYXRoTUxTcGFjZUVsZW1lbnQuaCIKKworI2luY2x1ZGUgIlJlbmRlck1hdGhNTFNwYWNl
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVz
OworCitpbmxpbmUgTWF0aE1MU3BhY2VFbGVtZW50OjpNYXRoTUxTcGFjZUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorICAgIDogTWF0aE1M
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKK3sKK30KKworUmVmPE1hdGhNTFNwYWNlRWxlbWVu
dD4gTWF0aE1MU3BhY2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1hdGhN
TFNwYWNlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOworfQorCit2b2lkIE1hdGhNTFNwYWNl
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBpZiAobmFtZSA9PSB3aWR0aEF0dHIpCisgICAg
ICAgIG1fd2lkdGguZGlydHkgPSB0cnVlOworICAgIGVsc2UgaWYgKG5hbWUgPT0gaGVpZ2h0QXR0
cikKKyAgICAgICAgbV9oZWlnaHQuZGlydHkgPSB0cnVlOworICAgIGVsc2UgaWYgKG5hbWUgPT0g
ZGVwdGhBdHRyKQorICAgICAgICBtX2RlcHRoLmRpcnR5ID0gdHJ1ZTsKKworICAgIE1hdGhNTEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKK30KKworUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IE1hdGhNTFNwYWNlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCit7CisgICAgQVNTRVJU
KGhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1zcGFjZVRhZykpOworICAgIHJldHVybiBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJNYXRoTUxTcGFjZT4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKK30KKwor
fQorCisjZW5kaWYgLy8gRU5BQkxFKE1BVEhNTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxTcGFjZUVsZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTVj
NjAwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNwYWNl
RWxlbWVudC5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdh
bGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgTWF0aE1MU3BhY2VFbGVtZW50X2gKKyNkZWZpbmUgTWF0aE1MU3BhY2VFbGVtZW50X2gKKwor
I2lmIEVOQUJMRShNQVRITUwpCisjaW5jbHVkZSAiTWF0aE1MRWxlbWVudC5oIgorI2luY2x1ZGUg
Ik1hdGhNTE5hbWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWF0aE1MU3Bh
Y2VFbGVtZW50IGZpbmFsIDogcHVibGljIE1hdGhNTEVsZW1lbnQgeworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8TWF0aE1MU3BhY2VFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmKTsKKyAgICBjb25zdCBMZW5ndGgmIHdpZHRoKCkgeyByZXR1cm4g
Y2FjaGVkTWF0aE1MTGVuZ3RoKE1hdGhNTE5hbWVzOjp3aWR0aEF0dHIsIG1fd2lkdGgpOyB9Cisg
ICAgY29uc3QgTGVuZ3RoJiBoZWlnaHQoKSB7IHJldHVybiBjYWNoZWRNYXRoTUxMZW5ndGgoTWF0
aE1MTmFtZXM6OmhlaWdodEF0dHIsIG1faGVpZ2h0KTsgfQorICAgIGNvbnN0IExlbmd0aCYgZGVw
dGgoKSB7IHJldHVybiBjYWNoZWRNYXRoTUxMZW5ndGgoTWF0aE1MTmFtZXM6OmRlcHRoQXR0ciwg
bV9kZXB0aCk7IH0KKworcHJpdmF0ZToKKyAgICBNYXRoTUxTcGFjZUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKKyAgICBib29sIGlzUHJlc2VudGF0aW9u
TWF0aE1MKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CisKKyAgICBMZW5ndGgg
bV93aWR0aDsKKyAgICBMZW5ndGggbV9oZWlnaHQ7CisgICAgTGVuZ3RoIG1fZGVwdGg7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUFUSE1MKQorI2VuZGlmIC8vIE1hdGhNTFNwYWNlRWxl
bWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcAppbmRl
eCBjMWRjNGY3Li4yYjJkODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MVGV4dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0
RWxlbWVudC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKIAogI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgi
CiAjaW5jbHVkZSAiUmVuZGVyTWF0aE1MT3BlcmF0b3IuaCIKLSNpbmNsdWRlICJSZW5kZXJNYXRo
TUxTcGFjZS5oIgogI2luY2x1ZGUgIlJlbmRlck1hdGhNTFRva2VuLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTc5LDggKzc4LDYgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1hdGhN
TFRleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJgogewogICAg
IGlmIChoYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptb1RhZykpCiAgICAgICAgIHJldHVybiBjcmVh
dGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxPcGVyYXRvcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsK
LSAgICBpZiAoaGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bXNwYWNlVGFnKSkKLSAgICAgICAgcmV0
dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTFNwYWNlPigqdGhpcywgV1RGTW92ZShzdHls
ZSkpOwogICAgIGlmIChoYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjphbm5vdGF0aW9uVGFnKSkKICAg
ICAgICAgcmV0dXJuIE1hdGhNTEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihXVEZNb3Zl
KHN0eWxlKSwgaW5zZXJ0aW9uUG9zaXRpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvbWF0aHRhZ3MuaW4gYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvbWF0aHRhZ3MuaW4K
aW5kZXggNWQwODFkMS4uNGY0MDg5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1s
L21hdGh0YWdzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9tYXRodGFncy5pbgpAQCAt
MjQsNyArMjQsNyBAQCBtbiBpbnRlcmZhY2VOYW1lPU1hdGhNTFRleHRFbGVtZW50CiBtbyBpbnRl
cmZhY2VOYW1lPU1hdGhNTFRleHRFbGVtZW50CiBtdGV4dCBpbnRlcmZhY2VOYW1lPU1hdGhNTFRl
eHRFbGVtZW50CiBtcyBpbnRlcmZhY2VOYW1lPU1hdGhNTFRleHRFbGVtZW50Ci1tc3BhY2UgaW50
ZXJmYWNlTmFtZT1NYXRoTUxUZXh0RWxlbWVudAorbXNwYWNlIGludGVyZmFjZU5hbWU9TWF0aE1M
U3BhY2VFbGVtZW50CiBtc3ViIGludGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29udGFpbmVyRWxl
bWVudAogbXN1cCBpbnRlcmZhY2VOYW1lPU1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQKIG10
YWJsZSBpbnRlcmZhY2VOYW1lPU1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5jcHAK
aW5kZXggZWNiOGNiZi4uY2NlNjAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5jcHAKQEAgLTM2LDExICszNiw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKIAot
UmVuZGVyTWF0aE1MU3BhY2U6OlJlbmRlck1hdGhNTFNwYWNlKE1hdGhNTFRleHRFbGVtZW50JiBl
bGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQorUmVuZGVyTWF0aE1MU3BhY2U6OlJlbmRlck1h
dGhNTFNwYWNlKE1hdGhNTFNwYWNlRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHls
ZSkKICAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQotICAg
ICwgbV93aWR0aCgwKQotICAgICwgbV9oZWlnaHQoMCkKLSAgICAsIG1fZGVwdGgoMCkKIHsKIH0K
IApAQCAtNDgsMzQgKzQ1LDI5IEBAIHZvaWQgUmVuZGVyTWF0aE1MU3BhY2U6OmNvbXB1dGVQcmVm
ZXJyZWRMb2dpY2FsV2lkdGhzKCkKIHsKICAgICBBU1NFUlQocHJlZmVycmVkTG9naWNhbFdpZHRo
c0RpcnR5KCkpOwogCi0gICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBtX21heFByZWZl
cnJlZExvZ2ljYWxXaWR0aCA9IG1fd2lkdGg7CisgICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lk
dGggPSBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IHNwYWNlV2lkdGgoKTsKIAogICAgIHNl
dFByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eShmYWxzZSk7CiB9CiAKLXZvaWQgUmVuZGVyTWF0
aE1MU3BhY2U6OnVwZGF0ZUZyb21FbGVtZW50KCkKK0xheW91dFVuaXQgUmVuZGVyTWF0aE1MU3Bh
Y2U6OnNwYWNlV2lkdGgoKSBjb25zdAogewotICAgIGNvbnN0IGF1dG8mIHNwYWNlRWxlbWVudCA9
IGVsZW1lbnQoKTsKLQotICAgIC8vIFRoaXMgcGFyc2VzIHRoZSBtc3BhY2UgYXR0cmlidXRlcywg
dXNpbmcgMCBhcyB0aGUgZGVmYXVsdCB2YWx1ZXMuCi0gICAgbV93aWR0aCA9IDA7Ci0gICAgbV9o
ZWlnaHQgPSAwOwotICAgIG1fZGVwdGggPSAwOwotICAgIHBhcnNlTWF0aE1MTGVuZ3RoKHNwYWNl
RWxlbWVudC5nZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OndpZHRoQXR0ciksIG1fd2lkdGgsICZz
dHlsZSgpKTsKLSAgICBwYXJzZU1hdGhNTExlbmd0aChzcGFjZUVsZW1lbnQuZ2V0QXR0cmlidXRl
KE1hdGhNTE5hbWVzOjpoZWlnaHRBdHRyKSwgbV9oZWlnaHQsICZzdHlsZSgpKTsKLSAgICBwYXJz
ZU1hdGhNTExlbmd0aChzcGFjZUVsZW1lbnQuZ2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpkZXB0
aEF0dHIpLCBtX2RlcHRoLCAmc3R5bGUoKSk7CisgICAgYXV0byYgc3BhY2VFbGVtZW50ID0gZWxl
bWVudCgpOworICAgIC8vIEZJWE1FOiBOZWdhdGl2ZSB3aWR0aCB2YWx1ZXMgYXJlIG5vdCBzdXBw
b3J0ZWQgeWV0LgorICAgIHJldHVybiBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCB0b1VzZXJVbml0
cyhzcGFjZUVsZW1lbnQud2lkdGgoKSwgc3R5bGUoKSwgMCkpOworfQogCi0gICAgLy8gRklYTUU6
IE5lZ2F0aXZlIHdpZHRoIHZhbHVlcyBzaG91bGQgYmUgYWNjZXB0ZWQuCi0gICAgaWYgKG1fd2lk
dGggPCAwKQotICAgICAgICBtX3dpZHRoID0gMDsKK3ZvaWQgUmVuZGVyTWF0aE1MU3BhY2U6Omdl
dFNwYWNlSGVpZ2h0QW5kRGVwdGgoTGF5b3V0VW5pdCYgaGVpZ2h0LCBMYXlvdXRVbml0JiBkZXB0
aCkgY29uc3QKK3sKKyAgICBhdXRvJiBzcGFjZUVsZW1lbnQgPSBlbGVtZW50KCk7CisgICAgaGVp
Z2h0ID0gdG9Vc2VyVW5pdHMoc3BhY2VFbGVtZW50LmhlaWdodCgpLCBzdHlsZSgpLCAwKTsKKyAg
ICBkZXB0aCA9IHRvVXNlclVuaXRzKHNwYWNlRWxlbWVudC5kZXB0aCgpLCBzdHlsZSgpLCAwKTsK
IAogICAgIC8vIElmIHRoZSB0b3RhbCBoZWlnaHQgaXMgbmVnYXRpdmUsIHNldCB2ZXJ0aWNhbCBk
aW1lbnNpb25zIHRvIDAuCi0gICAgaWYgKG1faGVpZ2h0ICsgbV9kZXB0aCA8IDApIHsKLSAgICAg
ICAgbV9oZWlnaHQgPSAwOwotICAgICAgICBtX2RlcHRoID0gMDsKKyAgICBpZiAoaGVpZ2h0ICsg
ZGVwdGggPCAwKSB7CisgICAgICAgIGhlaWdodCA9IDA7CisgICAgICAgIGRlcHRoID0gMDsKICAg
ICB9Ci0KLSAgICBzZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKIH0KIAogdm9p
ZCBSZW5kZXJNYXRoTUxTcGFjZTo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBM
YXlvdXRVbml0KQpAQCAtODUsOCArNzcsMTAgQEAgdm9pZCBSZW5kZXJNYXRoTUxTcGFjZTo6bGF5
b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogICAgIGlmICghcmVs
YXlvdXRDaGlsZHJlbiAmJiBzaW1wbGlmaWVkTGF5b3V0KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHNldExvZ2ljYWxXaWR0aChtX3dpZHRoKTsKLSAgICBzZXRMb2dpY2FsSGVpZ2h0KG1faGVp
Z2h0ICsgbV9kZXB0aCk7CisgICAgc2V0TG9naWNhbFdpZHRoKHNwYWNlV2lkdGgoKSk7CisgICAg
TGF5b3V0VW5pdCBoZWlnaHQsIGRlcHRoOworICAgIGdldFNwYWNlSGVpZ2h0QW5kRGVwdGgoaGVp
Z2h0LCBkZXB0aCk7CisgICAgc2V0TG9naWNhbEhlaWdodChoZWlnaHQgKyBkZXB0aCk7CiAKICAg
ICBjbGVhck5lZWRzTGF5b3V0KCk7CiB9CkBAIC05OSw3ICs5Myw5IEBAIHZvaWQgUmVuZGVyTWF0
aE1MU3BhY2U6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5k
ZXJTdHlsZSoKIAogT3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxTcGFjZTo6Zmlyc3RMaW5lQmFz
ZWxpbmUoKSBjb25zdAogewotICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KG1faGVpZ2h0KTsKKyAg
ICBMYXlvdXRVbml0IGhlaWdodCwgZGVwdGg7CisgICAgZ2V0U3BhY2VIZWlnaHRBbmREZXB0aCho
ZWlnaHQsIGRlcHRoKTsKKyAgICByZXR1cm4gT3B0aW9uYWw8aW50PihoZWlnaHQpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNw
YWNlLmgKaW5kZXggYzMwOTEyNi4uNDdlYzM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaApAQCAtMjgsMjkgKzI4LDI3IEBA
CiAKICNpZiBFTkFCTEUoTUFUSE1MKQogCi0jaW5jbHVkZSAiTWF0aE1MVGV4dEVsZW1lbnQuaCIK
KyNpbmNsdWRlICJNYXRoTUxTcGFjZUVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJNYXRoTUxC
bG9jay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjbGFzcyBSZW5kZXJNYXRoTUxT
cGFjZSBmaW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVu
ZGVyTWF0aE1MU3BhY2UoTWF0aE1MVGV4dEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKLSAgICBN
YXRoTUxUZXh0RWxlbWVudCYgZWxlbWVudCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE1hdGhNTFRl
eHRFbGVtZW50Jj4obm9kZUZvck5vbkFub255bW91cygpKTsgfQorICAgIFJlbmRlck1hdGhNTFNw
YWNlKE1hdGhNTFNwYWNlRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOworICAgIE1hdGhNTFNwYWNl
RWxlbWVudCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE1hdGhNTFNwYWNl
RWxlbWVudCY+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KIAogcHJpdmF0ZToKICAgICBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gaXNBbm9ueW1vdXMoKSA/
ICJSZW5kZXJNYXRoTUxTcGFjZSAoYW5vbnltb3VzKSIgOiAiUmVuZGVyTWF0aE1MU3BhY2UiOyB9
CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTFNwYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5k
ZXJTdHlsZSogb2xkU3R5bGUpIGZpbmFsOwogICAgIGJvb2wgaXNDaGlsZEFsbG93ZWQoY29uc3Qg
UmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBmaW5hbCB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBmaW5hbDsKICAgICB2b2lkIGNv
bXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgZmluYWw7CiAgICAgdm9pZCBsYXlvdXRCbG9j
ayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAw
KSBmaW5hbDsKICAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmlu
YWw7CiAKLSAgICBMYXlvdXRVbml0IG1fd2lkdGg7Ci0gICAgTGF5b3V0VW5pdCBtX2hlaWdodDsK
LSAgICBMYXlvdXRVbml0IG1fZGVwdGg7CisgICAgTGF5b3V0VW5pdCBzcGFjZVdpZHRoKCkgY29u
c3Q7CisgICAgdm9pZCBnZXRTcGFjZUhlaWdodEFuZERlcHRoKExheW91dFVuaXQmIGhlaWdodCwg
TGF5b3V0VW5pdCYgZGVwdGgpIGNvbnN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
LSAKMi44LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279114</attachid>
            <date>2016-05-17 05:32:07 -0700</date>
            <delta_ts>2016-07-08 07:04:21 -0700</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>mathml-space-EWS.patch</filename>
            <type>text/plain</type>
            <size>35354</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNDNmZGExMi4uZDAyNDg5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE5ODQsNiArMTk4NCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBtYXRo
bWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCiAgICAgbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVu
dC5jcHAKICAgICBtYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAKKyAgICBtYXRobWwvTWF0
aE1MU3BhY2VFbGVtZW50LmNwcAogICAgIG1hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAKIAog
ICAgIHBhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDFjYjY3Mi4u
ODkxODY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDE2LTA1LTE3ICBGcmVkZXJp
YyBXYW5nICA8ZndhbmdAaWdhbGlhLm9yZz4KKworICAgICAgICBNb3ZlIHBhcnNpbmcgb2YgbXNw
YWNlIGF0dHJpYnV0ZXMgdG8gYSBNYXRoTUxTcGFjZUVsZW1lbnQgY2xhc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Njc5NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYWxyZWFk
eSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
IEFkZCBNYXRoTUxTcGFjZUVsZW1lbnQgdG8gdGhlIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIG1hdGht
bC9NYXRoTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVsZW1lbnQ6OmNh
Y2hlZE1hdGhNTExlbmd0aCk6IEhlbHBlciBmdW5jdGlvbiB0byByZXR1cm5lZCB0aGUgY2FjaGVk
IHBhcnNlZAorICAgICAgICB2YWx1ZSBvZiBhIE1hdGhNTCBsZW5ndGggYW5kIHBhcnNpbmcgdGhl
IGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIHZhbHVlIGlmIHRoZSBjYWNoZSBpcyBkaXJ0eS4KKyAg
ICAgICAgKiBtYXRobWwvTWF0aE1MRWxlbWVudC5oOiBBZGQgYSBkaXJ0eSBib29sZWFuIHRvIE1h
dGhNTCBMZW5ndGggc3RydWN0dXJlLiBEZWNsYXJlIGNhY2hlZE1hdGhNTExlbmd0aC4KKyAgICAg
ICAgKiBtYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcDogTmV3IGNsYXNzIGZvciB0aGUgPG1z
cGFjZT4gZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFNwYWNlRWxlbWVudDo6TWF0
aE1MU3BhY2VFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFNwYWNlRWxlbWVudDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFNwYWNlRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOiBNYWtlIHdpZHRoLCBoZWlnaHQsIGRlcHRoIGF0dHJpYnV0ZXMgZGlydHkuCisgICAg
ICAgIChXZWJDb3JlOjpNYXRoTUxTcGFjZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6
CisgICAgICAgICogbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5oOiBOZXcgY2xhc3MgZm9yIHRo
ZSA8bXNwYWNlPiBlbGVtZW50LgorICAgICAgICBXZSBkZWZpbmUgTWF0aE1MIGxlbmd0aHMgZm9y
IHdpZHRoLCBoZWlnaHQgYW5kIGRlcHRoIGF0dHJpYnV0ZXMgYXJlIG9uIHRoZSBjbGFzcyBhbmQg
ZXhwb3NlCisgICAgICAgIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgaGVscGVyIGZ1bmN0aW9ucyB2
aWEgbWVtb2l6YXRpb24uCisgICAgICAgICogbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcDog
UmVtb3ZlIGhhbmRsaW5nIG9mIG1zcGFjZSBmcm9tIHRoaXMgY2xhc3MuCisgICAgICAgIChXZWJD
b3JlOjpNYXRoTUxUZXh0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAg
KiBtYXRobWwvbWF0aHRhZ3MuaW46IENoYW5nZSB0aGUgaW50ZXJmYWNlIGZvciBtc3BhY2UgdG8g
dXNlIHRoZSBuZXcgY2xhc3MuCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxTcGFjZS5jcHA6IERvIG5vdCBzdG9yZSB3aWR0aC9oZWlnaHQvZGVwdGggdmFsdWVzIG9uIHRo
ZQorICAgICAgICByZW5kZXJlciBhbmQgaW5zdGVhZCBqdXN0IHVzZSB0aGUgY29ycmVzcG9uZGlu
ZyBNYXRoTUwgbGVuZ3RocyBvbiB0aGUgZWxlbWVudCBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTFNwYWNlOjpSZW5kZXJNYXRoTUxTcGFjZSk6IFVzZSBNYXRoTUxTcGFjZUVs
ZW1lbnQgYW5kIHJlbW92ZSBtZW1iZXIKKyAgICAgICAgaW5pdGlhbGl6YXRpb24uCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTcGFjZTo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0
aHMpOiBVc2Ugc3BhY2VXaWR0aCgpLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU3Bh
Y2U6OnNwYWNlV2lkdGgpOiBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSB0aGUgd2lkdGggYXR0
cmlidXRlIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU3BhY2U6OmdldFNw
YWNlSGVpZ2h0QW5kRGVwdGgpOiBEaXR0byBmb3IgaGVpZ2h0IGFuZCBkZXB0aC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck1hdGhNTFNwYWNlOjpsYXlvdXRCbG9jayk6IFVzZSB0aGUgaGVscGVy
IGZ1bmN0aW9ucyB0byBnZXQgdGhlIG1zcGFjZSBtZXRyaWNzLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MU3BhY2U6OmZpcnN0TGluZUJhc2VsaW5lKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJNYXRoTUxTcGFjZTo6dXBkYXRlRnJvbUVsZW1lbnQpOiBEZWxldGVkLgor
ICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaDogVXNlIE1hdGhN
TFNwYWNlRWxlbWVudCwgcmVwbGFjZSBtZW1iZXJzIHdpdGggaGVscGVyCisgICAgICAgIGZ1bmN0
aW9ucyBhbmQgYW5kIG1ha2UgZWxlbWVudCgpIHVzYWJsZSBmcm9tIGEgY29uc3QgaW5zdGFuY2Uu
CisKKzIwMTYtMDUtMTYgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEub3JnPgorCisgICAg
ICAgIENyZWF0ZSBhIE1hdGhNTExlbmd0aCBzdHJ1Y3QgdG8gaGFuZGxlIHRoZSBwYXJzaW5nIG9m
IE1hdGhNTCBsZW5ndGguCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTY3OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXZSBpbnRyb2R1Y2UgYSBzdHJ1Y3R1cmUgZm9yIE1hdGhNTCBsZW5ndGhzIHRoYXQg
d2lsbCBiZSB1c2VkIGluIHRoZSBmdXR1cmUgdG8gc3RvcmUgdGhlCisgICAgICAgIHBhcnNlZCB2
YWx1ZXMgaW4gdGhlIE1hdGhFbGVtZW50IGNsYXNzLiBXZSBhbHNvIHJld3JpdGUgdGhlIHBhcnNp
bmcgZnVuY3Rpb24gZm9yIE1hdGhNTAorICAgICAgICBsZW5ndGhzIGluIG9yZGVyIHRvIGltcHJv
dmUgZWZmaWNpZW5jeSBhbmQgY29kZSByZXVzZS4gVGhpcyBmdW5jdGlvbiBpcyBtb3ZlZCBpbnRv
IHRoZQorICAgICAgICBNYXRoRWxlbWVudCBjbGFzcyBhbmQgb25seSB0aGUgY29udmVyc2lvbiB0
byBMYXlvdXRVbml0IHJlbWFpbnMgaW4gdGhlIHJlbmRlcmVyIGNsYXNzZXMuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzLCBhbHJlYWR5IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAg
ICAgKiBtYXRobWwvTWF0aE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZU5h
bWVkU3BhY2UpOiBIZWxwZXIgZnVuY3Rpb24gdG8gcGFyc2UgYSBuYW1lZCBzcGFjZS4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1hdGhNTEVsZW1lbnQ6OnBhcnNlTWF0aE1MTGVuZ3RoKTogUGFyc2luZyBm
dW5jdGlvbiBmb3IgTWF0aE1MIGxlbmd0aHMuCisgICAgICAgICogbWF0aG1sL01hdGhNTEVsZW1l
bnQuaDogRGVjbGFyZSBuZXcgZnVuY3Rpb24gYW5kIHN0cnVjdHVyZSB0byBoYW5kbGUgTWF0aE1M
IGxlbmd0aHMuCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp0b1VzZXJVbml0cyk6IEhlbHBlciBmdW5jdGlvbiB0byBy
ZXNvbHZlIGEgTWF0aE1MIGxlbmd0aC4KKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlTWF0aE1MTGVu
Z3RoKTogUmVtb3ZlIHRoZSBvbGQgcGFyc2luZyBjb2RlIGFuZCBqdXN0IHVzZSBNYXRoTUxFbGVt
ZW50OjpwYXJzZU1hdGhNTExlbmd0aCBhbmQgdG9Vc2VyVW5pdHMgaW5zdGVhZC4KKyAgICAgICAg
KFdlYkNvcmU6OnBhcnNlTWF0aE1MTmFtZWRTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oOiBSZW1vdmUgdW51c2VkIGZ1bmN0aW9u
LgorCiAyMDE2LTA1LTE2ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbQ2Fpcm9dIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3RvciBzaG91bGQg
dXNlIHRoZSBjb3JyZWN0IHNpemUgZm9yIGNvcHlpbmcgbm9uLWltYWdlIHN1cmZhY2VzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
MzQ0ZGE0Ny4uNjJlYzc3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjgzNSw2ICs2ODM1LDggQEAKIAkJRjk4RkZGNDQxMUEy
Njc2MjAwRjU0OEU4IC8qIENTU09NVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjk4RkZGNDIxMUEyNjc2MjAwRjU0OEU4IC8qIENTU09NVXRp
bHMuY3BwICovOyB9OwogCQlGOThGRkY0NTExQTI2NzYyMDBGNTQ4RTggLyogQ1NTT01VdGlscy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjk4RkZGNDMx
MUEyNjc2MjAwRjU0OEU4IC8qIENTU09NVXRpbHMuaCAqLzsgfTsKIAkJRjlGMEVEN0EwREI1MENB
MjAwRDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjlGMEVENzcwREI1MENBMjAwRDE2REI5
IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICovOyB9OworCQk0RkE2NUE2QjExMDhB
QkVEMDAyNjE1RTAgLyogTWF0aE1MU3BhY2VFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGQTY1QTY5MTEwOEFCRUQwMDI2MTVFMCAvKiBN
YXRoTUxTcGFjZUVsZW1lbnQuY3BwICovOyB9OworCQk0RkE2NUE2QzExMDhBQkVEMDAyNjE1RTAg
LyogTWF0aE1MU3BhY2VFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0RkE2NUE2QTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MU3BhY2VFbGVt
ZW50LmggKi87IH07CiAJCUZBNjU0QTZCMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
QTY1NEE2OTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuY3BwICovOyB9Owog
CQlGQTY1NEE2QzExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBNjU0QTZBMTEwOEFCRUQw
MDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5oICovOyB9OwogCQlGQUJFNzJGNDEwNTlDMUVC
MDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGQUJFNzJFRDEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxl
bWVudC5jcHAgKi87IH07CkBAIC0xNDkyOSw2ICsxNDkzMSw4IEBACiAJCUY5RjBFRDc4MERCNTBD
QTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGQTY1NEE2MzExMDhBQkI3MDAyNjE1RTAgLyogbWF0aG1sLmNz
cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gbWF0aG1sLmNzczsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkE2NTRBNjcxMTA4QUJFMjAwMjYxNUUwIC8qIG1hdGhhdHRycy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBtYXRoYXR0cnMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTRGQTY1QTY5MTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxTcGFjZUVsZW1lbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MU3BhY2VFbGVt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEZBNjVBNkExMTA4QUJFRDAw
MjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNYXRoTUxTcGFjZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkE2NTRBNjkxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTFRleHRFbGVtZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkE2NTRBNkExMTA4QUJFRDAwMjYxNUUwIC8q
IE1hdGhNTFRleHRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1h
dGhNTFRleHRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBNkU0NjZG
Q0QwNDE4QTk5NjZBNUI2MCAvKiBETlNSZXNvbHZlUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRE5TUmVzb2x2ZVF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yNDY0Niw2ICsyNDY1MCw4IEBACiAJCQkJQ0U2RDg5Mjk0QzdBQUNFMEFEODlCM0RE
IC8qIE1hdGhNTE1lbmNsb3NlRWxlbWVudC5oICovLAogCQkJCUY3NUEwNTlBRjE3MEQ4RkFBNUI4
Q0FCRSAvKiBNYXRoTUxTZWxlY3RFbGVtZW50LmNwcCAqLywKIAkJCQk1OTc4MDg0OUQ0MUU2RjY1
RDgxMTk4QkMgLyogTWF0aE1MU2VsZWN0RWxlbWVudC5oICovLAorCQkJCTRGQTY1QTY5MTEwOEFC
RUQwMDI2MTVFMCAvKiBNYXRoTUxTcGFjZUVsZW1lbnQuY3BwICovLAorCQkJCTRGQTY1QTZBMTEw
OEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxTcGFjZUVsZW1lbnQuaCAqLywKIAkJCQlGQTY1NEE2OTEx
MDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuY3BwICovLAogCQkJCUZBNjU0QTZB
MTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5oICovLAogCQkJCUZBQkU3MkYz
MTA1OUMxRUIwMEQ5OTlERCAvKiBtYXRodGFncy5pbiAqLywKQEAgLTI3MTY3LDYgKzI3MTczLDcg
QEAKIAkJCQlGQUJFNzJGOTEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MTWF0aEVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ0QTI4QUFGMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1l
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5MDQ2RTAxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhN
TE9wZXJhdG9yRGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEZBNjVBNkMxMTA4QUJF
RDAwMjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkE2
NTRBNkMxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0OUQ1REMyQzBGNDIzQTczMDA4RjIwRkQgLyogTWF0cml4M0RUcmFuc2Zvcm1PcGVy
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUM3MEVGODZENDcwMDlEMENBRiAvKiBN
YXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMzA5NTIsNiArMzA5
NTksNyBAQAogCQkJCUZBQkU3MkZFMTA1OUMyMTEwMEQ5OTlERCAvKiBNYXRoTUxOYW1lcy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0MzkwNDZERjEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MT3Bl
cmF0b3JEaWN0aW9uYXJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFRDQ4MzkwQ0VENjZDMzI1
NUY3MkM1OSAvKiBNYXRoTUxTZWxlY3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTRG
QTY1QTZCMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxTcGFjZUVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRkE2NTRBNkIxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RDVEQzJCMEY0MjNBNzMwMDhGMjBGRCAvKiBNYXRy
aXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUU5MTFDNjBF
Rjg2RDQ3MDA5RDBDQUYgLyogTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCmluZGV4IDMxYmFiYzMu
LjMxYzAwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKQEAgLTMw
Miw2ICszMDIsMTA5IEBAIHZvaWQgTWF0aE1MRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpCiAgICAgU3R5bGVkRWxlbWVu
dDo6YXR0cmlidXRlQ2hhbmdlZChuYW1lLCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHJlYXNvbik7CiB9
CiAKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgcGFyc2VOYW1lZFNwYWNlKGNvbnN0IFN0cmluZ1Zp
ZXcmIHN0cmluZykKK3sKKyAgICBpZiAoc3RyaW5nID09ICJ2ZXJ5dmVyeXRoaW5tYXRoc3BhY2Ui
KQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoc3RyaW5nID09ICJ2ZXJ5dGhpbm1hdGhzcGFj
ZSIpCisgICAgICAgIHJldHVybiAyOworICAgIGlmIChzdHJpbmcgPT0gInRoaW5tYXRoc3BhY2Ui
KQorICAgICAgICByZXR1cm4gMzsKKyAgICBpZiAoc3RyaW5nID09ICJtZWRpdW1tYXRoc3BhY2Ui
KQorICAgICAgICByZXR1cm4gNDsKKyAgICBpZiAoc3RyaW5nID09ICJ0aGlja21hdGhzcGFjZSIp
CisgICAgICAgIHJldHVybiA1OworICAgIGlmIChzdHJpbmcgPT0gInZlcnl0aGlja21hdGhzcGFj
ZSIpCisgICAgICAgIHJldHVybiA2OworICAgIGlmIChzdHJpbmcgPT0gInZlcnl2ZXJ5dGhpY2tt
YXRoc3BhY2UiKQorICAgICAgICByZXR1cm4gNzsKKyAgICByZXR1cm4gMDsKK30KKworTWF0aE1M
RWxlbWVudDo6TGVuZ3RoIE1hdGhNTEVsZW1lbnQ6OnBhcnNlTWF0aE1MTGVuZ3RoKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQoreworICAgIExlbmd0aCBsZW5ndGg7CisKKyAgICAvLyBUaGUgcmVndWxh
ciBleHByZXNzaW9uIGZyb20gdGhlIE1hdGhNTCBSZWxheCBORyBzY2hlbWEgaXMgYXMgZm9sbG93
czoKKyAgICAvLworICAgIC8vICAgcGF0dGVybiA9ICdccyooKC0/WzAtOV0qKFswLTldXC4/fFwu
WzAtOV0pWzAtOV0qKGVbbXhdfGlufGNtfG1tfHBbeHRjXXwlKT8pfChuZWdhdGl2ZSk/KCh2ZXJ5
KXswLDJ9dGhpKG58Y2spfG1lZGl1bSltYXRoc3BhY2UpXHMqJworICAgIC8vCisgICAgLy8gV2Ug
ZG8gbm90IHBlcmZvcm0gYSBzdHJpY3QgdmVyaWZpY2F0aW9uIG9mIHRoZSBzeW50YXggb2Ygd2hp
dGVzcGFjZXMgYW5kIG51bWJlci4KKyAgICAvLyBJbnN0ZWFkLCB3ZSBqdXN0IHVzZSBpc0hUTUxT
cGFjZSBhbmQgdG9GbG9hdCB0byBwYXJzZSB0aGVzZSBwYXJ0cy4KKworICAgIC8vIFdlIGZpcnN0
IHNraXAgd2hpdGVzcGFjZSBmcm9tIGJvdGggZW5kcyBvZiB0aGUgc3RyaW5nLgorICAgIHVuc2ln
bmVkIHN0YXJ0ID0gMCwgc3RyaW5nTGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOworICAgIHdoaWxl
IChzdHJpbmdMZW5ndGggPiAwICYmIGlzSFRNTFNwYWNlKHN0cmluZ1tzdGFydF0pKSB7CisgICAg
ICAgIHN0YXJ0Kys7CisgICAgICAgIHN0cmluZ0xlbmd0aC0tOworICAgIH0KKyAgICB3aGlsZSAo
c3RyaW5nTGVuZ3RoID4gMCAmJiBpc0hUTUxTcGFjZShzdHJpbmdbc3RhcnQgKyBzdHJpbmdMZW5n
dGggLSAxXSkpCisgICAgICAgIHN0cmluZ0xlbmd0aC0tOworICAgIGlmICghc3RyaW5nTGVuZ3Ro
KQorICAgICAgICByZXR1cm4gbGVuZ3RoOworCisgICAgLy8gV2UgY29uc2lkZXIgdGhlIG1vc3Qg
dHlwaWNhbCBjYXNlOiBhIG51bWJlciBmb2xsb3dlZCBieSBhbiBvcHRpb25hbCB1bml0LgorICAg
IFVDaGFyIGZpcnN0Q2hhciA9IHN0cmluZ1tzdGFydF07CisgICAgaWYgKGlzQVNDSUlEaWdpdChm
aXJzdENoYXIpIHx8IGZpcnN0Q2hhciA9PSAnLScgfHwgZmlyc3RDaGFyID09ICcuJykgeworICAg
ICAgICBMZW5ndGhUeXBlIGxlbmd0aFR5cGUgPSBMZW5ndGhUeXBlOjpVbml0TGVzczsKKyAgICAg
ICAgVUNoYXIgbGFzdENoYXIgPSBzdHJpbmdbc3RhcnQgKyBzdHJpbmdMZW5ndGggLSAxXTsKKyAg
ICAgICAgaWYgKGxhc3RDaGFyID09ICclJykgeworICAgICAgICAgICAgbGVuZ3RoVHlwZSA9IExl
bmd0aFR5cGU6OlBlcmNlbnRhZ2U7CisgICAgICAgICAgICBzdHJpbmdMZW5ndGgtLTsKKyAgICAg
ICAgfSBlbHNlIGlmIChzdHJpbmdMZW5ndGggPj0gMikgeworICAgICAgICAgICAgVUNoYXIgcGVu
dWx0aW1hdGVDaGFyID0gc3RyaW5nW3N0YXJ0ICsgc3RyaW5nTGVuZ3RoIC0gMl07CisgICAgICAg
ICAgICBpZiAocGVudWx0aW1hdGVDaGFyID09ICdjJyAmJiBsYXN0Q2hhciA9PSAnbScpCisgICAg
ICAgICAgICAgICAgbGVuZ3RoVHlwZSA9IExlbmd0aFR5cGU6OkNtOworICAgICAgICAgICAgaWYg
KHBlbnVsdGltYXRlQ2hhciA9PSAnZScgJiYgbGFzdENoYXIgPT0gJ20nKQorICAgICAgICAgICAg
ICAgIGxlbmd0aFR5cGUgPSBMZW5ndGhUeXBlOjpFbTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHBl
bnVsdGltYXRlQ2hhciA9PSAnZScgJiYgbGFzdENoYXIgPT0gJ3gnKQorICAgICAgICAgICAgICAg
IGxlbmd0aFR5cGUgPSBMZW5ndGhUeXBlOjpFeDsKKyAgICAgICAgICAgIGVsc2UgaWYgKHBlbnVs
dGltYXRlQ2hhciA9PSAnaScgJiYgbGFzdENoYXIgPT0gJ24nKQorICAgICAgICAgICAgICAgIGxl
bmd0aFR5cGUgPSBMZW5ndGhUeXBlOjpJbjsKKyAgICAgICAgICAgIGVsc2UgaWYgKHBlbnVsdGlt
YXRlQ2hhciA9PSAnbScgJiYgbGFzdENoYXIgPT0gJ20nKQorICAgICAgICAgICAgICAgIGxlbmd0
aFR5cGUgPSBMZW5ndGhUeXBlOjpNbTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHBlbnVsdGltYXRl
Q2hhciA9PSAncCcgJiYgbGFzdENoYXIgPT0gJ2MnKQorICAgICAgICAgICAgICAgIGxlbmd0aFR5
cGUgPSBMZW5ndGhUeXBlOjpQYzsKKyAgICAgICAgICAgIGVsc2UgaWYgKHBlbnVsdGltYXRlQ2hh
ciA9PSAncCcgJiYgbGFzdENoYXIgPT0gJ3QnKQorICAgICAgICAgICAgICAgIGxlbmd0aFR5cGUg
PSBMZW5ndGhUeXBlOjpQdDsKKyAgICAgICAgICAgIGVsc2UgaWYgKHBlbnVsdGltYXRlQ2hhciA9
PSAncCcgJiYgbGFzdENoYXIgPT0gJ3gnKQorICAgICAgICAgICAgICAgIGxlbmd0aFR5cGUgPSBM
ZW5ndGhUeXBlOjpQeDsKKworICAgICAgICAgICAgaWYgKGxlbmd0aFR5cGUgIT0gTGVuZ3RoVHlw
ZTo6VW5pdExlc3MpCisgICAgICAgICAgICAgICAgc3RyaW5nTGVuZ3RoIC09IDI7CisgICAgICAg
IH0KKyAgICAgICAgYm9vbCBvazsKKyAgICAgICAgZmxvYXQgbGVuZ3RoVmFsdWUgPSBzdHJpbmcu
c3Vic3RyaW5nKHN0YXJ0LCBzdHJpbmdMZW5ndGgpLnRvRmxvYXQoJm9rKTsKKyAgICAgICAgaWYg
KG9rKSB7CisgICAgICAgICAgICBsZW5ndGgudHlwZSA9IGxlbmd0aFR5cGU7CisgICAgICAgICAg
ICBsZW5ndGgudmFsdWUgPSBsZW5ndGhWYWx1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
bGVuZ3RoOworICAgIH0KKworICAgIC8vIE90aGVyd2lzZSwgd2UgdHJ5IGFuZCBwYXJzZSBhIG5h
bWVkIHNwYWNlLgorICAgIGJvb2wgbmVnYXRpdmUgPSBzdHJpbmcuc3RhcnRzV2l0aCgibmVnYXRp
dmUiKTsKKyAgICBpZiAobmVnYXRpdmUpIHsKKyAgICAgICAgc3RhcnQgKz0gODsKKyAgICAgICAg
c3RyaW5nTGVuZ3RoIC09IDg7CisgICAgfQorICAgIHVuc2lnbmVkIG5hbWVkU3BhY2VWYWx1ZSA9
IHBhcnNlTmFtZWRTcGFjZShzdHJpbmcuc3Vic3RyaW5nKHN0YXJ0LCBzdHJpbmdMZW5ndGgpKTsK
KyAgICBpZiAobmFtZWRTcGFjZVZhbHVlKSB7CisgICAgICAgIGxlbmd0aC50eXBlID0gTGVuZ3Ro
VHlwZTo6TWF0aFVuaXQ7CisgICAgICAgIGxlbmd0aC52YWx1ZSA9IG5hbWVkU3BhY2VWYWx1ZSAq
IChuZWdhdGl2ZSA/IC0xIDogMSk7CisgICAgfQorICAgIHJldHVybiBsZW5ndGg7Cit9CisKK2Nv
bnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgTWF0aE1MRWxlbWVudDo6Y2FjaGVkTWF0aE1MTGVu
Z3RoKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIExlbmd0aCYgbGVuZ3RoKQoreworICAgIGlm
IChsZW5ndGguZGlydHkpIHsKKyAgICAgICAgbGVuZ3RoID0gcGFyc2VNYXRoTUxMZW5ndGgoZmFz
dEdldEF0dHJpYnV0ZShuYW1lKSk7CisgICAgICAgIGxlbmd0aC5kaXJ0eSA9IGZhbHNlOworICAg
IH0KKyAgICByZXR1cm4gbGVuZ3RoOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTUFUSE1M
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKaW5kZXggMmE1YjNlZS4uNjE3ZjNh
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCkBAIC01Niw2ICs1NiwxNyBA
QCBwdWJsaWM6CiAKICAgICBib29sIGhhc1RhZ05hbWUoY29uc3QgTWF0aE1MUXVhbGlmaWVkTmFt
ZSYgbmFtZSkgY29uc3QgeyByZXR1cm4gaGFzTG9jYWxOYW1lKG5hbWUubG9jYWxOYW1lKCkpOyB9
CiAKKyAgICAvLyBNYXRoTUwgbGVuZ3RocyAoaHR0cHM6Ly93d3cudzMub3JnL1RSL01hdGhNTDMv
Y2hhcHRlcjIuaHRtbCNmdW5kLnVuaXRzKQorICAgIC8vIFRlWCdzIE1hdGggVW5pdCBpcyB1c2Vk
IGludGVybmFsbHkgZm9yIG5hbWVkIHNwYWNlcyAoMSBtdSA9IDEvMTggZW0pLgorICAgIC8vIFVu
aXRsZXNzIHZhbHVlcyBhcmUgaW50ZXByZXRlZCBhcyBhIG11bHRpcGxlIG9mIGEgcmVmZXJlbmNl
IHZhbHVlLgorICAgIGVudW0gY2xhc3MgTGVuZ3RoVHlwZSB7IENtLCBFbSwgRXgsIEluLCBNYXRo
VW5pdCwgTW0sIFBhcnNpbmdGYWlsZWQsIFBjLCBQZXJjZW50YWdlLCBQdCwgUHgsIFVuaXRMZXNz
IH07CisgICAgc3RydWN0IExlbmd0aCB7CisgICAgICAgIExlbmd0aFR5cGUgdHlwZSA9IExlbmd0
aFR5cGU6OlBhcnNpbmdGYWlsZWQ7CisgICAgICAgIGZsb2F0IHZhbHVlID0gMDsKKyAgICAgICAg
Ym9vbCBkaXJ0eSA9IHRydWU7CisgICAgfTsKKyAgICBzdGF0aWMgTGVuZ3RoIHBhcnNlTWF0aE1M
TGVuZ3RoKGNvbnN0IFN0cmluZyYpOworCiBwcm90ZWN0ZWQ6CiAgICAgTWF0aE1MRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOwogCkBAIC02OSw2ICs4MCw4
IEBAIHByb3RlY3RlZDoKICAgICBib29sIGlzUGhyYXNpbmdDb250ZW50KGNvbnN0IE5vZGUmKSBj
b25zdDsKICAgICBib29sIGlzRmxvd0NvbnRlbnQoY29uc3QgTm9kZSYpIGNvbnN0OwogCisgICAg
Y29uc3QgTGVuZ3RoJiBjYWNoZWRNYXRoTUxMZW5ndGgoY29uc3QgUXVhbGlmaWVkTmFtZSYsIExl
bmd0aCYpOworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTZWxlY3RlZENoaWxk
KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNwYWNl
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTcyYWExCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5jcHAKQEAg
LTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShNQVRITUwpCisjaW5jbHVkZSAiTWF0aE1MU3BhY2VFbGVtZW50
LmgiCisKKyNpbmNsdWRlICJSZW5kZXJNYXRoTUxTcGFjZS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKKworaW5saW5lIE1hdGhNTFNwYWNl
RWxlbWVudDo6TWF0aE1MU3BhY2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50JiBkb2N1bWVudCkKKyAgICA6IE1hdGhNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCit7Cit9CisKK1JlZjxNYXRoTUxTcGFjZUVsZW1lbnQ+IE1hdGhNTFNwYWNlRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYXRoTUxTcGFjZUVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpKTsKK30KKwordm9pZCBNYXRoTUxTcGFjZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit7
CisgICAgaWYgKG5hbWUgPT0gd2lkdGhBdHRyKQorICAgICAgICBtX3dpZHRoLmRpcnR5ID0gdHJ1
ZTsKKyAgICBlbHNlIGlmIChuYW1lID09IGhlaWdodEF0dHIpCisgICAgICAgIG1faGVpZ2h0LmRp
cnR5ID0gdHJ1ZTsKKyAgICBlbHNlIGlmIChuYW1lID09IGRlcHRoQXR0cikKKyAgICAgICAgbV9k
ZXB0aC5kaXJ0eSA9IHRydWU7CisKKyAgICBNYXRoTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShu
YW1lLCB2YWx1ZSk7Cit9CisKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxTcGFjZUVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKQoreworICAgIEFTU0VSVChoYXNUYWdOYW1lKE1hdGhNTE5hbWVz
Ojptc3BhY2VUYWcpKTsKKyAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MU3Bh
Y2U+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShN
QVRITUwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE1YzYwMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuaApAQCAtMCwwICsxLDU2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1hdGhNTFNwYWNlRWxlbWVudF9o
CisjZGVmaW5lIE1hdGhNTFNwYWNlRWxlbWVudF9oCisKKyNpZiBFTkFCTEUoTUFUSE1MKQorI2lu
Y2x1ZGUgIk1hdGhNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1hdGhNTFNwYWNlRWxlbWVudCBmaW5hbCA6IHB1Ymxp
YyBNYXRoTUxFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPE1hdGhNTFNwYWNlRWxl
bWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Jik7Cisg
ICAgY29uc3QgTGVuZ3RoJiB3aWR0aCgpIHsgcmV0dXJuIGNhY2hlZE1hdGhNTExlbmd0aChNYXRo
TUxOYW1lczo6d2lkdGhBdHRyLCBtX3dpZHRoKTsgfQorICAgIGNvbnN0IExlbmd0aCYgaGVpZ2h0
KCkgeyByZXR1cm4gY2FjaGVkTWF0aE1MTGVuZ3RoKE1hdGhNTE5hbWVzOjpoZWlnaHRBdHRyLCBt
X2hlaWdodCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIGRlcHRoKCkgeyByZXR1cm4gY2FjaGVkTWF0
aE1MTGVuZ3RoKE1hdGhNTE5hbWVzOjpkZXB0aEF0dHIsIG1fZGVwdGgpOyB9CisKK3ByaXZhdGU6
CisgICAgTWF0aE1MU3BhY2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50Jik7CisgICAgYm9vbCBpc1ByZXNlbnRhdGlvbk1hdGhNTCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFs
OworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21pY1N0cmluZyYpIGZpbmFsOworCisgICAgTGVuZ3RoIG1fd2lkdGg7CisgICAgTGVuZ3RoIG1f
aGVpZ2h0OworICAgIExlbmd0aCBtX2RlcHRoOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxF
KE1BVEhNTCkKKyNlbmRpZiAvLyBNYXRoTUxTcGFjZUVsZW1lbnRfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAKaW5kZXggYzFkYzRmNy4uMmIyZDg1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwCkBAIC0zMiw3ICsz
Miw2IEBACiAKICNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgogI2luY2x1ZGUgIlJlbmRlck1hdGhN
TE9wZXJhdG9yLmgiCi0jaW5jbHVkZSAiUmVuZGVyTWF0aE1MU3BhY2UuaCIKICNpbmNsdWRlICJS
ZW5kZXJNYXRoTUxUb2tlbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03OSw4ICs3OCw2
IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxUZXh0RWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYKIHsKICAgICBpZiAoaGFzVGFnTmFtZShNYXRoTUxO
YW1lczo6bW9UYWcpKQogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1M
T3BlcmF0b3I+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7Ci0gICAgaWYgKGhhc1RhZ05hbWUoTWF0
aE1MTmFtZXM6Om1zcGFjZVRhZykpCi0gICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5k
ZXJNYXRoTUxTcGFjZT4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKICAgICBpZiAoaGFzVGFnTmFt
ZShNYXRoTUxOYW1lczo6YW5ub3RhdGlvblRhZykpCiAgICAgICAgIHJldHVybiBNYXRoTUxFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoV1RGTW92ZShzdHlsZSksIGluc2VydGlvblBvc2l0
aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL21hdGh0YWdzLmluIGIv
U291cmNlL1dlYkNvcmUvbWF0aG1sL21hdGh0YWdzLmluCmluZGV4IDVkMDgxZDEuLjRmNDA4OWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9tYXRodGFncy5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvbWF0aHRhZ3MuaW4KQEAgLTI0LDcgKzI0LDcgQEAgbW4gaW50ZXJm
YWNlTmFtZT1NYXRoTUxUZXh0RWxlbWVudAogbW8gaW50ZXJmYWNlTmFtZT1NYXRoTUxUZXh0RWxl
bWVudAogbXRleHQgaW50ZXJmYWNlTmFtZT1NYXRoTUxUZXh0RWxlbWVudAogbXMgaW50ZXJmYWNl
TmFtZT1NYXRoTUxUZXh0RWxlbWVudAotbXNwYWNlIGludGVyZmFjZU5hbWU9TWF0aE1MVGV4dEVs
ZW1lbnQKK21zcGFjZSBpbnRlcmZhY2VOYW1lPU1hdGhNTFNwYWNlRWxlbWVudAogbXN1YiBpbnRl
cmZhY2VOYW1lPU1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQKIG1zdXAgaW50ZXJmYWNlTmFt
ZT1NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50CiBtdGFibGUgaW50ZXJmYWNlTmFtZT1NYXRo
TUxJbmxpbmVDb250YWluZXJFbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCmluZGV4IGRkODc4NGIuLjZmNzI2ODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
QmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MQmxvY2suY3BwCkBAIC0zMCwxMCArMzAsMTEgQEAKIAogI2luY2x1ZGUgIlJlbmRlck1hdGhN
TEJsb2NrLmgiCiAKKyNpbmNsdWRlICJDU1NIZWxwZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJNYXRoTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiTWF0aE1MTmFt
ZXMuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgogCiAjaWYgRU5BQkxFKERFQlVHX01BVEhfTEFZT1VUKQogI2luY2x1ZGUgIlBh
aW50SW5mby5oIgpAQCAtMTM0LDE3NyArMTM1LDUyIEBAIHZvaWQgUmVuZGVyTWF0aE1MQmxvY2s6
OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQog
fQogI2VuZGlmIC8vIEVOQUJMRShERUJVR19NQVRIX0xBWU9VVCkKIAotLy8KLS8vIFRoZSBNYXRo
TUwgc3BlY2lmaWNhdGlvbiBzYXlzOgotLy8gKGh0dHA6Ly93d3cudzMub3JnL1RSL01hdGhNTC9j
aGFwdGVyMi5odG1sI2Z1bmQudW5pdHMpCi0vLwotLy8gIk1vc3QgcHJlc2VudGF0aW9uIGVsZW1l
bnRzIGhhdmUgYXR0cmlidXRlcyB0aGF0IGFjY2VwdCB2YWx1ZXMgcmVwcmVzZW50aW5nCi0vLyBs
ZW5ndGhzIHRvIGJlIHVzZWQgZm9yIHNpemUsIHNwYWNpbmcgb3Igc2ltaWxhciBwcm9wZXJ0aWVz
LiBUaGUgc3ludGF4IG9mIGEKLS8vIGxlbmd0aCBpcyBzcGVjaWZpZWQgYXMKLS8vCi0vLyBudW1i
ZXIgfCBudW1iZXIgdW5pdCB8IG5hbWVkc3BhY2UKLS8vCi0vLyBUaGVyZSBzaG91bGQgYmUgbm8g
c3BhY2UgYmV0d2VlbiB0aGUgbnVtYmVyIGFuZCB0aGUgdW5pdCBvZiBhIGxlbmd0aC4iCi0vLyAK
LS8vICJBIHRyYWlsaW5nICclJyByZXByZXNlbnRzIGEgcGVyY2VudCBvZiB0aGUgZGVmYXVsdCB2
YWx1ZS4gVGhlIGRlZmF1bHQKLS8vIHZhbHVlLCBvciBob3cgaXQgaXMgb2J0YWluZWQsIGlzIGxp
c3RlZCBpbiB0aGUgdGFibGUgb2YgYXR0cmlidXRlcyBmb3IgZWFjaAotLy8gZWxlbWVudC4gWy4u
Ll0gQSBudW1iZXIgd2l0aG91dCBhIHVuaXQgaXMgaW50ZXByZXRlZCBhcyBhIG11bHRpcGxlIG9m
IHRoZQotLy8gZGVmYXVsdCB2YWx1ZS4iCi0vLwotLy8gIlRoZSBwb3NzaWJsZSB1bml0cyBpbiBN
YXRoTUwgYXJlOgotLy8gIAotLy8gVW5pdCBEZXNjcmlwdGlvbgotLy8gZW0gICBhbiBlbSAoZm9u
dC1yZWxhdGl2ZSB1bml0IHRyYWRpdGlvbmFsbHkgdXNlZCBmb3IgaG9yaXpvbnRhbCBsZW5ndGhz
KQotLy8gZXggICBhbiBleCAoZm9udC1yZWxhdGl2ZSB1bml0IHRyYWRpdGlvbmFsbHkgdXNlZCBm
b3IgdmVydGljYWwgbGVuZ3RocykKLS8vIHB4ICAgcGl4ZWxzLCBvciBzaXplIG9mIGEgcGl4ZWwg
aW4gdGhlIGN1cnJlbnQgZGlzcGxheQotLy8gaW4gICBpbmNoZXMgKDEgaW5jaCA9IDIuNTQgY2Vu
dGltZXRlcnMpCi0vLyBjbSAgIGNlbnRpbWV0ZXJzCi0vLyBtbSAgIG1pbGxpbWV0ZXJzCi0vLyBw
dCAgIHBvaW50cyAoMSBwb2ludCA9IDEvNzIgaW5jaCkKLS8vIHBjICAgcGljYXMgKDEgcGljYSA9
IDEyIHBvaW50cykKLS8vICUgICAgcGVyY2VudGFnZSBvZiBkZWZhdWx0IHZhbHVlIgotLy8KLS8v
IFRoZSBudW1iZXJzIGFyZSBkZWZpbmVkIHRoYXQgd2F5OgotLy8gLSB1bnNpZ25lZC1udW1iZXI6
ICJhIHN0cmluZyBvZiBkZWNpbWFsIGRpZ2l0cyB3aXRoIHVwIHRvIG9uZSBkZWNpbWFsIHBvaW50
Ci0vLyAgIChVKzAwMkUpLCByZXByZXNlbnRpbmcgYSBub24tbmVnYXRpdmUgdGVybWluYXRpbmcg
ZGVjaW1hbCBudW1iZXIgKGEgdHlwZSBvZgotLy8gICByYXRpb25hbCBudW1iZXIpIgotLy8gLSBu
dW1iZXI6ICJhbiBvcHRpb25hbCBwcmVmaXggb2YgJy0nIChVKzAwMkQpLCBmb2xsb3dlZCBieSBh
biB1bnNpZ25lZAotLy8gICBudW1iZXIsIHJlcHJlc2VudGluZyBhIHRlcm1pbmF0aW5nIGRlY2lt
YWwgbnVtYmVyIChhIHR5cGUgb2YgcmF0aW9uYWwKLS8vICAgbnVtYmVyKSIKLS8vCi1ib29sIHBh
cnNlTWF0aE1MTGVuZ3RoKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBMYXlvdXRVbml0JiBsZW5ndGhW
YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBib29sIGFsbG93TmVnYXRpdmUpCitMYXlv
dXRVbml0IHRvVXNlclVuaXRzKGNvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgbGVuZ3RoLCBj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IExheW91dFVuaXQmIHJlZmVyZW5jZVZhbHVl
KQogewotICAgIFN0cmluZyBzID0gc3RyaW5nLnNpbXBsaWZ5V2hpdGVTcGFjZSgpOwotCi0gICAg
aW50IHN0cmluZ0xlbmd0aCA9IHMubGVuZ3RoKCk7Ci0gICAgaWYgKCFzdHJpbmdMZW5ndGgpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChwYXJzZU1hdGhNTE5hbWVkU3BhY2Uocywg
bGVuZ3RoVmFsdWUsIHN0eWxlLCBhbGxvd05lZ2F0aXZlKSkKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0KLSAgICBTdHJpbmdCdWlsZGVyIG51bWJlcjsKLSAgICBTdHJpbmcgdW5pdDsKLQotICAgIC8v
IFRoaXMgdmVyaWZpZXMgd2hldGhlciB0aGUgbmVnYXRpdmUgc2lnbiBpcyB0aGVyZS4KLSAgICBp
bnQgaSA9IDA7Ci0gICAgVUNoYXIgYyA9IHNbMF07Ci0gICAgaWYgKGMgPT0gJy0nKSB7Ci0gICAg
ICAgIG51bWJlci5hcHBlbmQoYyk7Ci0gICAgICAgIGkrKzsKLSAgICB9Ci0KLSAgICAvLyBUaGlz
IGdhdGhlcnMgdXAgY2hhcmFjdGVycyB0aGF0IG1ha2UgdXAgdGhlIG51bWJlci4KLSAgICBib29s
IGdvdERvdCA9IGZhbHNlOwotICAgIGZvciAoIDsgaSA8IHN0cmluZ0xlbmd0aDsgaSsrKSB7Ci0g
ICAgICAgIGMgPSBzW2ldOwotICAgICAgICAvLyBUaGUgc3RyaW5nIGlzIGludmFsaWQgaWYgaXQg
Y29udGFpbnMgdHdvIGRvdHMuCi0gICAgICAgIGlmIChnb3REb3QgJiYgYyA9PSAnLicpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChjID09ICcuJykKLSAgICAgICAgICAg
IGdvdERvdCA9IHRydWU7Ci0gICAgICAgIGVsc2UgaWYgKCFpc0FTQ0lJRGlnaXQoYykpIHsKLSAg
ICAgICAgICAgIHVuaXQgPSBzLnN1YnN0cmluZyhpLCBzdHJpbmdMZW5ndGggLSBpKTsKLSAgICAg
ICAgICAgIC8vIFNvbWUgYXV0aG9ycyBsZWF2ZSBibGFua3MgYmVmb3JlIHRoZSB1bml0LCBidXQg
dGhhdCBzaG91bGRuJ3QKLSAgICAgICAgICAgIC8vIGJlIGFsbG93ZWQsIHNvIGRvbid0IHNpbXBs
aWZ5V2hpdGVzcGFjZSBvbiAndW5pdCcuCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBudW1iZXIuYXBwZW5kKGMpOworICAgIHN3aXRjaCAobGVuZ3RoLnR5cGUpIHsKKyAg
ICBjYXNlIE1hdGhNTEVsZW1lbnQ6Okxlbmd0aFR5cGU6OkNtOgorICAgICAgICByZXR1cm4gbGVu
Z3RoLnZhbHVlICogY3NzUGl4ZWxzUGVySW5jaCAvIDIuNTRmOworICAgIGNhc2UgTWF0aE1MRWxl
bWVudDo6TGVuZ3RoVHlwZTo6RW06CisgICAgICAgIHJldHVybiBsZW5ndGgudmFsdWUgKiBzdHls
ZS5mb250Q2FzY2FkZSgpLnNpemUoKTsKKyAgICBjYXNlIE1hdGhNTEVsZW1lbnQ6Okxlbmd0aFR5
cGU6OkV4OgorICAgICAgICByZXR1cm4gbGVuZ3RoLnZhbHVlICogc3R5bGUuZm9udE1ldHJpY3Mo
KS54SGVpZ2h0KCk7CisgICAgY2FzZSBNYXRoTUxFbGVtZW50OjpMZW5ndGhUeXBlOjpJbjoKKyAg
ICAgICAgcmV0dXJuIGxlbmd0aC52YWx1ZSAqIGNzc1BpeGVsc1BlckluY2g7CisgICAgY2FzZSBN
YXRoTUxFbGVtZW50OjpMZW5ndGhUeXBlOjpNYXRoVW5pdDoKKyAgICAgICAgcmV0dXJuIGxlbmd0
aC52YWx1ZSAqIHN0eWxlLmZvbnRDYXNjYWRlKCkuc2l6ZSgpIC8gMTg7CisgICAgY2FzZSBNYXRo
TUxFbGVtZW50OjpMZW5ndGhUeXBlOjpNbToKKyAgICAgICAgcmV0dXJuIGxlbmd0aC52YWx1ZSAq
IGNzc1BpeGVsc1BlckluY2ggLyAyNS40ZjsKKyAgICBjYXNlIE1hdGhNTEVsZW1lbnQ6Okxlbmd0
aFR5cGU6OlBjOgorICAgICAgICByZXR1cm4gbGVuZ3RoLnZhbHVlICogY3NzUGl4ZWxzUGVySW5j
aCAvIDY7CisgICAgY2FzZSBNYXRoTUxFbGVtZW50OjpMZW5ndGhUeXBlOjpQZXJjZW50YWdlOgor
ICAgICAgICByZXR1cm4gcmVmZXJlbmNlVmFsdWUgKiBsZW5ndGgudmFsdWUgLyAxMDA7CisgICAg
Y2FzZSBNYXRoTUxFbGVtZW50OjpMZW5ndGhUeXBlOjpQdDoKKyAgICAgICAgcmV0dXJuIGxlbmd0
aC52YWx1ZSAqIGNzc1BpeGVsc1BlckluY2ggLyA3MjsKKyAgICBjYXNlIE1hdGhNTEVsZW1lbnQ6
Okxlbmd0aFR5cGU6OlB4OgorICAgICAgICByZXR1cm4gbGVuZ3RoLnZhbHVlOworICAgIGNhc2Ug
TWF0aE1MRWxlbWVudDo6TGVuZ3RoVHlwZTo6VW5pdExlc3M6CisgICAgICAgIHJldHVybiByZWZl
cmVuY2VWYWx1ZSAqIGxlbmd0aC52YWx1ZTsKKyAgICBjYXNlIE1hdGhNTEVsZW1lbnQ6Okxlbmd0
aFR5cGU6OlBhcnNpbmdGYWlsZWQ6CisgICAgICAgIHJldHVybiByZWZlcmVuY2VWYWx1ZTsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
IHJlZmVyZW5jZVZhbHVlOwogICAgIH0KK30KIAotICAgIC8vIENvbnZlcnQgbnVtYmVyIHRvIGZs
b2F0aW5nIHBvaW50Ci0gICAgYm9vbCBvazsKLSAgICBmbG9hdCBmbG9hdFZhbHVlID0gbnVtYmVy
LnRvU3RyaW5nKCkudG9GbG9hdCgmb2spOwotICAgIGlmICghb2spCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAoZmxvYXRWYWx1ZSA8IDAgJiYgIWFsbG93TmVnYXRpdmUpCitib29sIHBh
cnNlTWF0aE1MTGVuZ3RoKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBMYXlvdXRVbml0JiBsZW5ndGhW
YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBib29sIGFsbG93TmVnYXRpdmUpCit7Cisg
ICAgTWF0aE1MRWxlbWVudDo6TGVuZ3RoIGxlbmd0aCA9IE1hdGhNTEVsZW1lbnQ6OnBhcnNlTWF0
aE1MTGVuZ3RoKHN0cmluZyk7CisgICAgaWYgKGxlbmd0aC50eXBlID09IE1hdGhNTEVsZW1lbnQ6
Okxlbmd0aFR5cGU6OlBhcnNpbmdGYWlsZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGlmICh1bml0LmlzRW1wdHkoKSkgewotICAgICAgICAvLyBubyBleHBsaWNpdCB1bml0LCB0aGlz
IGlzIGEgbnVtYmVyIHRoYXQgd2lsbCBhY3QgYXMgYSBtdWx0aXBsaWVyCi0gICAgICAgIGxlbmd0
aFZhbHVlICo9IGZsb2F0VmFsdWU7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBp
ZiAodW5pdCA9PSAiJSIpIHsKLSAgICAgICAgbGVuZ3RoVmFsdWUgKj0gZmxvYXRWYWx1ZSAvIDEw
MDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmICh1bml0ID09ICJlbSIpIHsK
LSAgICAgICAgbGVuZ3RoVmFsdWUgPSBmbG9hdFZhbHVlICogc3R5bGUtPmZvbnRDYXNjYWRlKCku
c2l6ZSgpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgaWYgKHVuaXQgPT0gImV4
IikgewotICAgICAgICBsZW5ndGhWYWx1ZSA9IGZsb2F0VmFsdWUgKiBzdHlsZS0+Zm9udE1ldHJp
Y3MoKS54SGVpZ2h0KCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBpZiAodW5p
dCA9PSAicHgiKSB7Ci0gICAgICAgIGxlbmd0aFZhbHVlID0gZmxvYXRWYWx1ZTsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmICh1bml0ID09ICJwdCIpIHsKLSAgICAgICAgbGVu
Z3RoVmFsdWUgPSA0ICogKGZsb2F0VmFsdWUgLyAzKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfQotICAgIGlmICh1bml0ID09ICJwYyIpIHsKLSAgICAgICAgbGVuZ3RoVmFsdWUgPSAxNiAq
IGZsb2F0VmFsdWU7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBpZiAodW5pdCA9
PSAiaW4iKSB7Ci0gICAgICAgIGxlbmd0aFZhbHVlID0gOTYgKiBmbG9hdFZhbHVlOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgaWYgKHVuaXQgPT0gImNtIikgewotICAgICAgICBs
ZW5ndGhWYWx1ZSA9IDk2ICogKGZsb2F0VmFsdWUgLyAyLjU0KTsKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotICAgIGlmICh1bml0ID09ICJtbSIpIHsKLSAgICAgICAgbGVuZ3RoVmFsdWUg
PSA5NiAqIChmbG9hdFZhbHVlIC8gMjUuNCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
KyAgICBMYXlvdXRVbml0IHZhbHVlID0gdG9Vc2VyVW5pdHMobGVuZ3RoLCAqc3R5bGUsIGxlbmd0
aFZhbHVlKTsKIAotICAgIC8vIHVuZXhwZWN0ZWQgdW5pdAotICAgIHJldHVybiBmYWxzZTsKLX0K
KyAgICBpZiAoIWFsbG93TmVnYXRpdmUgJiYgdmFsdWUgPCAwKQorICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLWJvb2wgcGFyc2VNYXRoTUxOYW1lZFNwYWNlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBM
YXlvdXRVbml0JiBsZW5ndGhWYWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBib29sIGFs
bG93TmVnYXRpdmUpCi17Ci0gICAgZmxvYXQgbGVuZ3RoID0gMDsKLSAgICAvLyBTZWUgaWYgaXQg
aXMgb25lIG9mIHRoZSBuYW1lZHNwYWNlcyAocmFuZ2luZyAtNy8xOGVtLCAtNi8xOCwgLi4uIDcv
MThlbSkKLSAgICBpZiAoc3RyaW5nID09ICJ2ZXJ5dmVyeXRoaW5tYXRoc3BhY2UiKQotICAgICAg
ICBsZW5ndGggPSAxOwotICAgIGVsc2UgaWYgKHN0cmluZyA9PSAidmVyeXRoaW5tYXRoc3BhY2Ui
KQotICAgICAgICBsZW5ndGggPSAyOwotICAgIGVsc2UgaWYgKHN0cmluZyA9PSAidGhpbm1hdGhz
cGFjZSIpCi0gICAgICAgIGxlbmd0aCA9IDM7Ci0gICAgZWxzZSBpZiAoc3RyaW5nID09ICJtZWRp
dW1tYXRoc3BhY2UiKQotICAgICAgICBsZW5ndGggPSA0OwotICAgIGVsc2UgaWYgKHN0cmluZyA9
PSAidGhpY2ttYXRoc3BhY2UiKQotICAgICAgICBsZW5ndGggPSA1OwotICAgIGVsc2UgaWYgKHN0
cmluZyA9PSAidmVyeXRoaWNrbWF0aHNwYWNlIikKLSAgICAgICAgbGVuZ3RoID0gNjsKLSAgICBl
bHNlIGlmIChzdHJpbmcgPT0gInZlcnl2ZXJ5dGhpY2ttYXRoc3BhY2UiKQotICAgICAgICBsZW5n
dGggPSA3OwotICAgIGVsc2UgaWYgKGFsbG93TmVnYXRpdmUpIHsKLSAgICAgICAgaWYgKHN0cmlu
ZyA9PSAibmVnYXRpdmV2ZXJ5dmVyeXRoaW5tYXRoc3BhY2UiKQotICAgICAgICAgICAgbGVuZ3Ro
ID0gLTE7Ci0gICAgICAgIGVsc2UgaWYgKHN0cmluZyA9PSAibmVnYXRpdmV2ZXJ5dGhpbm1hdGhz
cGFjZSIpCi0gICAgICAgICAgICBsZW5ndGggPSAtMjsKLSAgICAgICAgZWxzZSBpZiAoc3RyaW5n
ID09ICJuZWdhdGl2ZXRoaW5tYXRoc3BhY2UiKQotICAgICAgICAgICAgbGVuZ3RoID0gLTM7Ci0g
ICAgICAgIGVsc2UgaWYgKHN0cmluZyA9PSAibmVnYXRpdmVtZWRpdW1tYXRoc3BhY2UiKQotICAg
ICAgICAgICAgbGVuZ3RoID0gLTQ7Ci0gICAgICAgIGVsc2UgaWYgKHN0cmluZyA9PSAibmVnYXRp
dmV0aGlja21hdGhzcGFjZSIpCi0gICAgICAgICAgICBsZW5ndGggPSAtNTsKLSAgICAgICAgZWxz
ZSBpZiAoc3RyaW5nID09ICJuZWdhdGl2ZXZlcnl0aGlja21hdGhzcGFjZSIpCi0gICAgICAgICAg
ICBsZW5ndGggPSAtNjsKLSAgICAgICAgZWxzZSBpZiAoc3RyaW5nID09ICJuZWdhdGl2ZXZlcnl2
ZXJ5dGhpY2ttYXRoc3BhY2UiKQotICAgICAgICAgICAgbGVuZ3RoID0gLTc7ICAgICAgICAKLSAg
ICB9Ci0gICAgaWYgKGxlbmd0aCkgewotICAgICAgICBsZW5ndGhWYWx1ZSA9IGxlbmd0aCAqIHN0
eWxlLT5mb250Q2FzY2FkZSgpLnNpemUoKSAvIDE4OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGxlbmd0aFZhbHVlID0gdmFsdWU7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIE9wdGlvbmFsPGludD4gUmVuZGVyTWF0aE1MVGFibGU6OmZpcnN0TGlu
ZUJhc2VsaW5lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MQmxvY2suaAppbmRleCA0OTlhOTQ0Li42ZGI2YmI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCkBA
IC0yOSw2ICsyOSw3IEBACiAKICNpZiBFTkFCTEUoTUFUSE1MKQogCisjaW5jbHVkZSAiTWF0aE1M
RWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlckZsZXhpYmxlQm94LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVGFibGUuaCIKICNpbmNsdWRlICJTdHlsZUluaGVyaXRlZERhdGEuaCIKQEAgLTk0LDcgKzk1
LDcgQEAgcHJpdmF0ZToKIAogLy8gUGFyc2luZyBmdW5jdGlvbnMgZm9yIE1hdGhNTCBMZW5ndGgg
dmFsdWVzCiBib29sIHBhcnNlTWF0aE1MTGVuZ3RoKGNvbnN0IFN0cmluZyYsIExheW91dFVuaXQm
LCBjb25zdCBSZW5kZXJTdHlsZSosIGJvb2wgYWxsb3dOZWdhdGl2ZSA9IHRydWUpOwotYm9vbCBw
YXJzZU1hdGhNTE5hbWVkU3BhY2UoY29uc3QgU3RyaW5nJiwgTGF5b3V0VW5pdCYsIGNvbnN0IFJl
bmRlclN0eWxlKiwgYm9vbCBhbGxvd05lZ2F0aXZlID0gdHJ1ZSk7CitMYXlvdXRVbml0IHRvVXNl
clVuaXRzKGNvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYsIGNvbnN0IFJlbmRlclN0eWxlJiwg
Y29uc3QgTGF5b3V0VW5pdCYgcmVmZXJlbmNlVmFsdWUpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MU3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxTcGFjZS5jcHAKaW5kZXggZWNiOGNiZi4uY2NlNjAxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5jcHAKQEAgLTM2
LDExICszNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBN
YXRoTUxOYW1lczsKIAotUmVuZGVyTWF0aE1MU3BhY2U6OlJlbmRlck1hdGhNTFNwYWNlKE1hdGhN
TFRleHRFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQorUmVuZGVyTWF0aE1M
U3BhY2U6OlJlbmRlck1hdGhNTFNwYWNlKE1hdGhNTFNwYWNlRWxlbWVudCYgZWxlbWVudCwgUmVu
ZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGVsZW1lbnQsIFdURk1v
dmUoc3R5bGUpKQotICAgICwgbV93aWR0aCgwKQotICAgICwgbV9oZWlnaHQoMCkKLSAgICAsIG1f
ZGVwdGgoMCkKIHsKIH0KIApAQCAtNDgsMzQgKzQ1LDI5IEBAIHZvaWQgUmVuZGVyTWF0aE1MU3Bh
Y2U6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKIHsKICAgICBBU1NFUlQocHJlZmVy
cmVkTG9naWNhbFdpZHRoc0RpcnR5KCkpOwogCi0gICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lk
dGggPSBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IG1fd2lkdGg7CisgICAgbV9taW5QcmVm
ZXJyZWRMb2dpY2FsV2lkdGggPSBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IHNwYWNlV2lk
dGgoKTsKIAogICAgIHNldFByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eShmYWxzZSk7CiB9CiAK
LXZvaWQgUmVuZGVyTWF0aE1MU3BhY2U6OnVwZGF0ZUZyb21FbGVtZW50KCkKK0xheW91dFVuaXQg
UmVuZGVyTWF0aE1MU3BhY2U6OnNwYWNlV2lkdGgoKSBjb25zdAogewotICAgIGNvbnN0IGF1dG8m
IHNwYWNlRWxlbWVudCA9IGVsZW1lbnQoKTsKLQotICAgIC8vIFRoaXMgcGFyc2VzIHRoZSBtc3Bh
Y2UgYXR0cmlidXRlcywgdXNpbmcgMCBhcyB0aGUgZGVmYXVsdCB2YWx1ZXMuCi0gICAgbV93aWR0
aCA9IDA7Ci0gICAgbV9oZWlnaHQgPSAwOwotICAgIG1fZGVwdGggPSAwOwotICAgIHBhcnNlTWF0
aE1MTGVuZ3RoKHNwYWNlRWxlbWVudC5nZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OndpZHRoQXR0
ciksIG1fd2lkdGgsICZzdHlsZSgpKTsKLSAgICBwYXJzZU1hdGhNTExlbmd0aChzcGFjZUVsZW1l
bnQuZ2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpoZWlnaHRBdHRyKSwgbV9oZWlnaHQsICZzdHls
ZSgpKTsKLSAgICBwYXJzZU1hdGhNTExlbmd0aChzcGFjZUVsZW1lbnQuZ2V0QXR0cmlidXRlKE1h
dGhNTE5hbWVzOjpkZXB0aEF0dHIpLCBtX2RlcHRoLCAmc3R5bGUoKSk7CisgICAgYXV0byYgc3Bh
Y2VFbGVtZW50ID0gZWxlbWVudCgpOworICAgIC8vIEZJWE1FOiBOZWdhdGl2ZSB3aWR0aCB2YWx1
ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LgorICAgIHJldHVybiBzdGQ6Om1heDxMYXlvdXRVbml0
PigwLCB0b1VzZXJVbml0cyhzcGFjZUVsZW1lbnQud2lkdGgoKSwgc3R5bGUoKSwgMCkpOworfQog
Ci0gICAgLy8gRklYTUU6IE5lZ2F0aXZlIHdpZHRoIHZhbHVlcyBzaG91bGQgYmUgYWNjZXB0ZWQu
Ci0gICAgaWYgKG1fd2lkdGggPCAwKQotICAgICAgICBtX3dpZHRoID0gMDsKK3ZvaWQgUmVuZGVy
TWF0aE1MU3BhY2U6OmdldFNwYWNlSGVpZ2h0QW5kRGVwdGgoTGF5b3V0VW5pdCYgaGVpZ2h0LCBM
YXlvdXRVbml0JiBkZXB0aCkgY29uc3QKK3sKKyAgICBhdXRvJiBzcGFjZUVsZW1lbnQgPSBlbGVt
ZW50KCk7CisgICAgaGVpZ2h0ID0gdG9Vc2VyVW5pdHMoc3BhY2VFbGVtZW50LmhlaWdodCgpLCBz
dHlsZSgpLCAwKTsKKyAgICBkZXB0aCA9IHRvVXNlclVuaXRzKHNwYWNlRWxlbWVudC5kZXB0aCgp
LCBzdHlsZSgpLCAwKTsKIAogICAgIC8vIElmIHRoZSB0b3RhbCBoZWlnaHQgaXMgbmVnYXRpdmUs
IHNldCB2ZXJ0aWNhbCBkaW1lbnNpb25zIHRvIDAuCi0gICAgaWYgKG1faGVpZ2h0ICsgbV9kZXB0
aCA8IDApIHsKLSAgICAgICAgbV9oZWlnaHQgPSAwOwotICAgICAgICBtX2RlcHRoID0gMDsKKyAg
ICBpZiAoaGVpZ2h0ICsgZGVwdGggPCAwKSB7CisgICAgICAgIGhlaWdodCA9IDA7CisgICAgICAg
IGRlcHRoID0gMDsKICAgICB9Ci0KLSAgICBzZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNh
bGMoKTsKIH0KIAogdm9pZCBSZW5kZXJNYXRoTUxTcGFjZTo6bGF5b3V0QmxvY2soYm9vbCByZWxh
eW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQpAQCAtODUsOCArNzcsMTAgQEAgdm9pZCBSZW5kZXJN
YXRoTUxTcGFjZTo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0
KQogICAgIGlmICghcmVsYXlvdXRDaGlsZHJlbiAmJiBzaW1wbGlmaWVkTGF5b3V0KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHNldExvZ2ljYWxXaWR0aChtX3dpZHRoKTsKLSAgICBzZXRMb2dp
Y2FsSGVpZ2h0KG1faGVpZ2h0ICsgbV9kZXB0aCk7CisgICAgc2V0TG9naWNhbFdpZHRoKHNwYWNl
V2lkdGgoKSk7CisgICAgTGF5b3V0VW5pdCBoZWlnaHQsIGRlcHRoOworICAgIGdldFNwYWNlSGVp
Z2h0QW5kRGVwdGgoaGVpZ2h0LCBkZXB0aCk7CisgICAgc2V0TG9naWNhbEhlaWdodChoZWlnaHQg
KyBkZXB0aCk7CiAKICAgICBjbGVhck5lZWRzTGF5b3V0KCk7CiB9CkBAIC05OSw3ICs5Myw5IEBA
IHZvaWQgUmVuZGVyTWF0aE1MU3BhY2U6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBk
aWZmLCBjb25zdCBSZW5kZXJTdHlsZSoKIAogT3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxTcGFj
ZTo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewotICAgIHJldHVybiBPcHRpb25hbDxpbnQ+
KG1faGVpZ2h0KTsKKyAgICBMYXlvdXRVbml0IGhlaWdodCwgZGVwdGg7CisgICAgZ2V0U3BhY2VI
ZWlnaHRBbmREZXB0aChoZWlnaHQsIGRlcHRoKTsKKyAgICByZXR1cm4gT3B0aW9uYWw8aW50Piho
ZWlnaHQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFNwYWNlLmgKaW5kZXggYzMwOTEyNi4uNDdlYzM3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaApAQCAt
MjgsMjkgKzI4LDI3IEBACiAKICNpZiBFTkFCTEUoTUFUSE1MKQogCi0jaW5jbHVkZSAiTWF0aE1M
VGV4dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJNYXRoTUxTcGFjZUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJSZW5kZXJNYXRoTUxCbG9jay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjbGFz
cyBSZW5kZXJNYXRoTUxTcGFjZSBmaW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CiBw
dWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MU3BhY2UoTWF0aE1MVGV4dEVsZW1lbnQmLCBSZW5kZXJT
dHlsZSYmKTsKLSAgICBNYXRoTUxUZXh0RWxlbWVudCYgZWxlbWVudCgpIHsgcmV0dXJuIHN0YXRp
Y19jYXN0PE1hdGhNTFRleHRFbGVtZW50Jj4obm9kZUZvck5vbkFub255bW91cygpKTsgfQorICAg
IFJlbmRlck1hdGhNTFNwYWNlKE1hdGhNTFNwYWNlRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwor
ICAgIE1hdGhNTFNwYWNlRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PE1hdGhNTFNwYWNlRWxlbWVudCY+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KIAogcHJp
dmF0ZToKICAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
aXNBbm9ueW1vdXMoKSA/ICJSZW5kZXJNYXRoTUxTcGFjZSAoYW5vbnltb3VzKSIgOiAiUmVuZGVy
TWF0aE1MU3BhY2UiOyB9CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTFNwYWNlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJl
bmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIGZpbmFsOwogICAgIGJvb2wgaXNDaGls
ZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBmaW5h
bDsKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgZmluYWw7CiAgICAg
dm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxv
Z2ljYWxIZWlnaHQgPSAwKSBmaW5hbDsKICAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2Vs
aW5lKCkgY29uc3QgZmluYWw7CiAKLSAgICBMYXlvdXRVbml0IG1fd2lkdGg7Ci0gICAgTGF5b3V0
VW5pdCBtX2hlaWdodDsKLSAgICBMYXlvdXRVbml0IG1fZGVwdGg7CisgICAgTGF5b3V0VW5pdCBz
cGFjZVdpZHRoKCkgY29uc3Q7CisgICAgdm9pZCBnZXRTcGFjZUhlaWdodEFuZERlcHRoKExheW91
dFVuaXQmIGhlaWdodCwgTGF5b3V0VW5pdCYgZGVwdGgpIGNvbnN0OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279115</attachid>
            <date>2016-05-17 06:06:02 -0700</date>
            <delta_ts>2016-05-18 06:33:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0002-mathml-space.patch</filename>
            <type>text/plain</type>
            <size>21955</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">RnJvbSA3MGMyNzQ5Y2E1NWVkYzM5NDY0NDk1NzI1YzA4OWE2YzA3YjBkNmM1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBGcmVkZXJpYyBXYW5nIDxmcmVkLndhbmdAZnJlZS5mcj4KRGF0
ZTogVHVlLCAxNyBNYXkgMjAxNiAxNDowNjo0NyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMi8yXSBt
YXRobWwtc3BhY2UKCi0tLQogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgICAgICAgICAg
ICAgICAgICAgICAgfCAgMSArCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IDM5ICsrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiAgIHwgIDggKysrCiBTb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MRWxlbWVudC5jcHAgICAgICAgICAgICB8ICA5ICsrKwogU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTEVsZW1lbnQuaCAgICAgICAgICAgICAgfCAgMyArCiBTb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcCAgICAgICB8IDY4ICsrKysrKysrKysrKysr
KysrKysrKysKIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuaCAgICAg
ICAgIHwgNTYgKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
VGV4dEVsZW1lbnQuY3BwICAgICAgICB8ICAzIC0KIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9tYXRo
dGFncy5pbiAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIC4uLi9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwIHwgNDggKysrKysrKy0tLS0tLS0tCiAuLi4vV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmggICB8IDEyICsrLS0KIDEx
IGZpbGVzIGNoYW5nZWQsIDIxMiBpbnNlcnRpb25zKCspLCAzNyBkZWxldGlvbnMoLSkKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNw
cAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVs
ZW1lbnQuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNDNmZGExMi4uZDAyNDg5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTE5ODQsNiArMTk4NCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMK
ICAgICBtYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCiAgICAgbWF0aG1sL01hdGhNTE1lbmNs
b3NlRWxlbWVudC5jcHAKICAgICBtYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAKKyAgICBt
YXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcAogICAgIG1hdGhtbC9NYXRoTUxUZXh0RWxlbWVu
dC5jcHAKIAogICAgIHBhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OWNmMDZiOC4uODkxODY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE2LTA1LTE3
ICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLm9yZz4KKworICAgICAgICBNb3ZlIHBhcnNp
bmcgb2YgbXNwYWNlIGF0dHJpYnV0ZXMgdG8gYSBNYXRoTUxTcGFjZUVsZW1lbnQgY2xhc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Njc5NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cywgYWxyZWFkeSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6IEFkZCBNYXRoTUxTcGFjZUVsZW1lbnQgdG8gdGhlIGJ1aWxkIHN5c3RlbS4KKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAg
ICAqIG1hdGhtbC9NYXRoTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVs
ZW1lbnQ6OmNhY2hlZE1hdGhNTExlbmd0aCk6IEhlbHBlciBmdW5jdGlvbiB0byByZXR1cm5lZCB0
aGUgY2FjaGVkIHBhcnNlZAorICAgICAgICB2YWx1ZSBvZiBhIE1hdGhNTCBsZW5ndGggYW5kIHBh
cnNpbmcgdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIHZhbHVlIGlmIHRoZSBjYWNoZSBpcyBk
aXJ0eS4KKyAgICAgICAgKiBtYXRobWwvTWF0aE1MRWxlbWVudC5oOiBBZGQgYSBkaXJ0eSBib29s
ZWFuIHRvIE1hdGhNTCBMZW5ndGggc3RydWN0dXJlLiBEZWNsYXJlIGNhY2hlZE1hdGhNTExlbmd0
aC4KKyAgICAgICAgKiBtYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcDogTmV3IGNsYXNzIGZv
ciB0aGUgPG1zcGFjZT4gZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFNwYWNlRWxl
bWVudDo6TWF0aE1MU3BhY2VFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFNwYWNl
RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFNwYWNlRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUpOiBNYWtlIHdpZHRoLCBoZWlnaHQsIGRlcHRoIGF0dHJpYnV0ZXMgZGly
dHkuCisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxTcGFjZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcik6CisgICAgICAgICogbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5oOiBOZXcgY2xh
c3MgZm9yIHRoZSA8bXNwYWNlPiBlbGVtZW50LgorICAgICAgICBXZSBkZWZpbmUgTWF0aE1MIGxl
bmd0aHMgZm9yIHdpZHRoLCBoZWlnaHQgYW5kIGRlcHRoIGF0dHJpYnV0ZXMgYXJlIG9uIHRoZSBj
bGFzcyBhbmQgZXhwb3NlCisgICAgICAgIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgaGVscGVyIGZ1
bmN0aW9ucyB2aWEgbWVtb2l6YXRpb24uCisgICAgICAgICogbWF0aG1sL01hdGhNTFRleHRFbGVt
ZW50LmNwcDogUmVtb3ZlIGhhbmRsaW5nIG9mIG1zcGFjZSBmcm9tIHRoaXMgY2xhc3MuCisgICAg
ICAgIChXZWJDb3JlOjpNYXRoTUxUZXh0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToK
KyAgICAgICAgKiBtYXRobWwvbWF0aHRhZ3MuaW46IENoYW5nZSB0aGUgaW50ZXJmYWNlIGZvciBt
c3BhY2UgdG8gdXNlIHRoZSBuZXcgY2xhc3MuCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxTcGFjZS5jcHA6IERvIG5vdCBzdG9yZSB3aWR0aC9oZWlnaHQvZGVwdGggdmFs
dWVzIG9uIHRoZQorICAgICAgICByZW5kZXJlciBhbmQgaW5zdGVhZCBqdXN0IHVzZSB0aGUgY29y
cmVzcG9uZGluZyBNYXRoTUwgbGVuZ3RocyBvbiB0aGUgZWxlbWVudCBjbGFzcy4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck1hdGhNTFNwYWNlOjpSZW5kZXJNYXRoTUxTcGFjZSk6IFVzZSBNYXRo
TUxTcGFjZUVsZW1lbnQgYW5kIHJlbW92ZSBtZW1iZXIKKyAgICAgICAgaW5pdGlhbGl6YXRpb24u
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTcGFjZTo6Y29tcHV0ZVByZWZlcnJlZExv
Z2ljYWxXaWR0aHMpOiBVc2Ugc3BhY2VXaWR0aCgpLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TWF0aE1MU3BhY2U6OnNwYWNlV2lkdGgpOiBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSB0aGUg
d2lkdGggYXR0cmlidXRlIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU3Bh
Y2U6OmdldFNwYWNlSGVpZ2h0QW5kRGVwdGgpOiBEaXR0byBmb3IgaGVpZ2h0IGFuZCBkZXB0aC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFNwYWNlOjpsYXlvdXRCbG9jayk6IFVzZSB0
aGUgaGVscGVyIGZ1bmN0aW9ucyB0byBnZXQgdGhlIG1zcGFjZSBtZXRyaWNzLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTWF0aE1MU3BhY2U6OmZpcnN0TGluZUJhc2VsaW5lKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTcGFjZTo6dXBkYXRlRnJvbUVsZW1lbnQpOiBE
ZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaDog
VXNlIE1hdGhNTFNwYWNlRWxlbWVudCwgcmVwbGFjZSBtZW1iZXJzIHdpdGggaGVscGVyCisgICAg
ICAgIGZ1bmN0aW9ucyBhbmQgYW5kIG1ha2UgZWxlbWVudCgpIHVzYWJsZSBmcm9tIGEgY29uc3Qg
aW5zdGFuY2UuCisKIDIwMTYtMDUtMTYgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEub3Jn
PgogCiAgICAgICAgIENyZWF0ZSBhIE1hdGhNTExlbmd0aCBzdHJ1Y3QgdG8gaGFuZGxlIHRoZSBw
YXJzaW5nIG9mIE1hdGhNTCBsZW5ndGguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzQ0ZGE0Ny4uNjJlYzc3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjgz
NSw2ICs2ODM1LDggQEAKIAkJRjk4RkZGNDQxMUEyNjc2MjAwRjU0OEU4IC8qIENTU09NVXRpbHMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjk4RkZG
NDIxMUEyNjc2MjAwRjU0OEU4IC8qIENTU09NVXRpbHMuY3BwICovOyB9OwogCQlGOThGRkY0NTEx
QTI2NzYyMDBGNTQ4RTggLyogQ1NTT01VdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjk4RkZGNDMxMUEyNjc2MjAwRjU0OEU4IC8qIENTU09NVXRp
bHMuaCAqLzsgfTsKIAkJRjlGMEVEN0EwREI1MENBMjAwRDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0
UHJvZ3Jlc3NFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjlGMEVENzcwREI1MENBMjAwRDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NF
dmVudC5oICovOyB9OworCQk0RkE2NUE2QjExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MU3BhY2VF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRGQTY1QTY5MTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxTcGFjZUVsZW1lbnQuY3BwICovOyB9
OworCQk0RkE2NUE2QzExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MU3BhY2VFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RkE2NUE2QTExMDhB
QkVEMDAyNjE1RTAgLyogTWF0aE1MU3BhY2VFbGVtZW50LmggKi87IH07CiAJCUZBNjU0QTZCMTEw
OEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQTY1NEE2OTExMDhBQkVEMDAyNjE1RTAgLyog
TWF0aE1MVGV4dEVsZW1lbnQuY3BwICovOyB9OwogCQlGQTY1NEE2QzExMDhBQkVEMDAyNjE1RTAg
LyogTWF0aE1MVGV4dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZBNjU0QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVu
dC5oICovOyB9OwogCQlGQUJFNzJGNDEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUJFNzJF
RDEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5jcHAgKi87IH07CkBAIC0xNDkyOSw2
ICsxNDkzMSw4IEBACiAJCUY5RjBFRDc4MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVz
dFByb2dyZXNzRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBYTUxIdHRwUmVxdWVz
dFByb2dyZXNzRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQTY1NEE2
MzExMDhBQkI3MDAyNjE1RTAgLyogbWF0aG1sLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRo
ID0gbWF0aG1sLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkE2NTRBNjcxMTA4
QUJFMjAwMjYxNUUwIC8qIG1hdGhhdHRycy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBtYXRo
YXR0cnMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRGQTY1QTY5MTEwOEFCRUQw
MDI2MTVFMCAvKiBNYXRoTUxTcGFjZUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWF0aE1MU3BhY2VFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNEZBNjVBNkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxTcGFjZUVsZW1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkE2NTRBNjkxMTA4QUJFRDAwMjYxNUUw
IC8qIE1hdGhNTFRleHRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1hdGhNTFRleHRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkE2NTRBNkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTFRleHRFbGVtZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBNkU0NjZGQ0QwNDE4QTk5NjZBNUI2MCAvKiBETlNSZXNv
bHZlUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE5TUmVzb2x2ZVF1
ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDY0Niw2ICsyNDY1MCw4IEBA
CiAJCQkJQ0U2RDg5Mjk0QzdBQUNFMEFEODlCM0REIC8qIE1hdGhNTE1lbmNsb3NlRWxlbWVudC5o
ICovLAogCQkJCUY3NUEwNTlBRjE3MEQ4RkFBNUI4Q0FCRSAvKiBNYXRoTUxTZWxlY3RFbGVtZW50
LmNwcCAqLywKIAkJCQk1OTc4MDg0OUQ0MUU2RjY1RDgxMTk4QkMgLyogTWF0aE1MU2VsZWN0RWxl
bWVudC5oICovLAorCQkJCTRGQTY1QTY5MTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxTcGFjZUVs
ZW1lbnQuY3BwICovLAorCQkJCTRGQTY1QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxTcGFj
ZUVsZW1lbnQuaCAqLywKIAkJCQlGQTY1NEE2OTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4
dEVsZW1lbnQuY3BwICovLAogCQkJCUZBNjU0QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxU
ZXh0RWxlbWVudC5oICovLAogCQkJCUZBQkU3MkYzMTA1OUMxRUIwMEQ5OTlERCAvKiBtYXRodGFn
cy5pbiAqLywKQEAgLTI3MTY3LDYgKzI3MTczLDcgQEAKIAkJCQlGQUJFNzJGOTEwNTlDMUVCMDBE
OTk5REQgLyogTWF0aE1MTWF0aEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0QTI4QUFG
MTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5
MDQ2RTAxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNEZBNjVBNkMxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkE2NTRBNkMxMTA4QUJFRDAwMjYxNUUwIC8qIE1h
dGhNTFRleHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUQ1REMyQzBGNDIzQTczMDA4
RjIwRkQgLyogTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ5RTkxMUM3MEVGODZENDcwMDlEMENBRiAvKiBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaCBp
biBIZWFkZXJzICovLApAQCAtMzA5NTIsNiArMzA5NTksNyBAQAogCQkJCUZBQkU3MkZFMTA1OUMy
MTEwMEQ5OTlERCAvKiBNYXRoTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzkwNDZE
RjEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUZFRDQ4MzkwQ0VENjZDMzI1NUY3MkM1OSAvKiBNYXRoTUxTZWxlY3RFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTRGQTY1QTZCMTEwOEFCRUQwMDI2MTVFMCAvKiBN
YXRoTUxTcGFjZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkE2NTRBNkIxMTA4QUJF
RDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5
RDVEQzJCMEY0MjNBNzMwMDhGMjBGRCAvKiBNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0OUU5MTFDNjBFRjg2RDQ3MDA5RDBDQUYgLyogTWF0cml4VHJh
bnNmb3JtT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTEVsZW1lbnQuY3BwCmluZGV4IDBjYjkyZmQuLjMxYzAwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MRWxlbWVudC5jcHAKQEAgLTM5Niw2ICszOTYsMTUgQEAgTWF0aE1MRWxlbWVu
dDo6TGVuZ3RoIE1hdGhNTEVsZW1lbnQ6OnBhcnNlTWF0aE1MTGVuZ3RoKGNvbnN0IFN0cmluZyYg
c3RyaW5nKQogICAgIHJldHVybiBsZW5ndGg7CiB9CiAKK2NvbnN0IE1hdGhNTEVsZW1lbnQ6Okxl
bmd0aCYgTWF0aE1MRWxlbWVudDo6Y2FjaGVkTWF0aE1MTGVuZ3RoKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIExlbmd0aCYgbGVuZ3RoKQoreworICAgIGlmIChsZW5ndGguZGlydHkpIHsKKyAg
ICAgICAgbGVuZ3RoID0gcGFyc2VNYXRoTUxMZW5ndGgoZmFzdEdldEF0dHJpYnV0ZShuYW1lKSk7
CisgICAgICAgIGxlbmd0aC5kaXJ0eSA9IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gbGVuZ3Ro
OworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTUFUSE1MKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxFbGVtZW50LmgKaW5kZXggOTNmNGNiMC4uNjE3ZjNhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MRWxlbWVudC5oCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3Qg
TGVuZ3RoIHsKICAgICAgICAgTGVuZ3RoVHlwZSB0eXBlID0gTGVuZ3RoVHlwZTo6UGFyc2luZ0Zh
aWxlZDsKICAgICAgICAgZmxvYXQgdmFsdWUgPSAwOworICAgICAgICBib29sIGRpcnR5ID0gdHJ1
ZTsKICAgICB9OwogICAgIHN0YXRpYyBMZW5ndGggcGFyc2VNYXRoTUxMZW5ndGgoY29uc3QgU3Ry
aW5nJik7CiAKQEAgLTc5LDYgKzgwLDggQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaXNQaHJhc2lu
Z0NvbnRlbnQoY29uc3QgTm9kZSYpIGNvbnN0OwogICAgIGJvb2wgaXNGbG93Q29udGVudChjb25z
dCBOb2RlJikgY29uc3Q7CiAKKyAgICBjb25zdCBMZW5ndGgmIGNhY2hlZE1hdGhNTExlbmd0aChj
b25zdCBRdWFsaWZpZWROYW1lJiwgTGVuZ3RoJik7CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVNlbGVjdGVkQ2hpbGQoKSB7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxTcGFjZUVsZW1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjhlNzJhYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MU3BhY2VFbGVtZW50LmNwcApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1BVEhNTCkKKyNpbmNs
dWRlICJNYXRoTUxTcGFjZUVsZW1lbnQuaCIKKworI2luY2x1ZGUgIlJlbmRlck1hdGhNTFNwYWNl
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVz
OworCitpbmxpbmUgTWF0aE1MU3BhY2VFbGVtZW50OjpNYXRoTUxTcGFjZUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorICAgIDogTWF0aE1M
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKK3sKK30KKworUmVmPE1hdGhNTFNwYWNlRWxlbWVu
dD4gTWF0aE1MU3BhY2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1hdGhN
TFNwYWNlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOworfQorCit2b2lkIE1hdGhNTFNwYWNl
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBpZiAobmFtZSA9PSB3aWR0aEF0dHIpCisgICAg
ICAgIG1fd2lkdGguZGlydHkgPSB0cnVlOworICAgIGVsc2UgaWYgKG5hbWUgPT0gaGVpZ2h0QXR0
cikKKyAgICAgICAgbV9oZWlnaHQuZGlydHkgPSB0cnVlOworICAgIGVsc2UgaWYgKG5hbWUgPT0g
ZGVwdGhBdHRyKQorICAgICAgICBtX2RlcHRoLmRpcnR5ID0gdHJ1ZTsKKworICAgIE1hdGhNTEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKK30KKworUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IE1hdGhNTFNwYWNlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCit7CisgICAgQVNTRVJU
KGhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1zcGFjZVRhZykpOworICAgIHJldHVybiBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJNYXRoTUxTcGFjZT4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKK30KKwor
fQorCisjZW5kaWYgLy8gRU5BQkxFKE1BVEhNTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxTcGFjZUVsZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTVj
NjAwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNwYWNl
RWxlbWVudC5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdh
bGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgTWF0aE1MU3BhY2VFbGVtZW50X2gKKyNkZWZpbmUgTWF0aE1MU3BhY2VFbGVtZW50X2gKKwor
I2lmIEVOQUJMRShNQVRITUwpCisjaW5jbHVkZSAiTWF0aE1MRWxlbWVudC5oIgorI2luY2x1ZGUg
Ik1hdGhNTE5hbWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWF0aE1MU3Bh
Y2VFbGVtZW50IGZpbmFsIDogcHVibGljIE1hdGhNTEVsZW1lbnQgeworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8TWF0aE1MU3BhY2VFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmKTsKKyAgICBjb25zdCBMZW5ndGgmIHdpZHRoKCkgeyByZXR1cm4g
Y2FjaGVkTWF0aE1MTGVuZ3RoKE1hdGhNTE5hbWVzOjp3aWR0aEF0dHIsIG1fd2lkdGgpOyB9Cisg
ICAgY29uc3QgTGVuZ3RoJiBoZWlnaHQoKSB7IHJldHVybiBjYWNoZWRNYXRoTUxMZW5ndGgoTWF0
aE1MTmFtZXM6OmhlaWdodEF0dHIsIG1faGVpZ2h0KTsgfQorICAgIGNvbnN0IExlbmd0aCYgZGVw
dGgoKSB7IHJldHVybiBjYWNoZWRNYXRoTUxMZW5ndGgoTWF0aE1MTmFtZXM6OmRlcHRoQXR0ciwg
bV9kZXB0aCk7IH0KKworcHJpdmF0ZToKKyAgICBNYXRoTUxTcGFjZUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKKyAgICBib29sIGlzUHJlc2VudGF0aW9u
TWF0aE1MKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CisKKyAgICBMZW5ndGgg
bV93aWR0aDsKKyAgICBMZW5ndGggbV9oZWlnaHQ7CisgICAgTGVuZ3RoIG1fZGVwdGg7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUFUSE1MKQorI2VuZGlmIC8vIE1hdGhNTFNwYWNlRWxl
bWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcAppbmRl
eCBjMWRjNGY3Li4yYjJkODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MVGV4dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0
RWxlbWVudC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKIAogI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgi
CiAjaW5jbHVkZSAiUmVuZGVyTWF0aE1MT3BlcmF0b3IuaCIKLSNpbmNsdWRlICJSZW5kZXJNYXRo
TUxTcGFjZS5oIgogI2luY2x1ZGUgIlJlbmRlck1hdGhNTFRva2VuLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTc5LDggKzc4LDYgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1hdGhN
TFRleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJgogewogICAg
IGlmIChoYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptb1RhZykpCiAgICAgICAgIHJldHVybiBjcmVh
dGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxPcGVyYXRvcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsK
LSAgICBpZiAoaGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bXNwYWNlVGFnKSkKLSAgICAgICAgcmV0
dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTFNwYWNlPigqdGhpcywgV1RGTW92ZShzdHls
ZSkpOwogICAgIGlmIChoYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjphbm5vdGF0aW9uVGFnKSkKICAg
ICAgICAgcmV0dXJuIE1hdGhNTEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihXVEZNb3Zl
KHN0eWxlKSwgaW5zZXJ0aW9uUG9zaXRpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvbWF0aHRhZ3MuaW4gYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvbWF0aHRhZ3MuaW4K
aW5kZXggNWQwODFkMS4uNGY0MDg5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1s
L21hdGh0YWdzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9tYXRodGFncy5pbgpAQCAt
MjQsNyArMjQsNyBAQCBtbiBpbnRlcmZhY2VOYW1lPU1hdGhNTFRleHRFbGVtZW50CiBtbyBpbnRl
cmZhY2VOYW1lPU1hdGhNTFRleHRFbGVtZW50CiBtdGV4dCBpbnRlcmZhY2VOYW1lPU1hdGhNTFRl
eHRFbGVtZW50CiBtcyBpbnRlcmZhY2VOYW1lPU1hdGhNTFRleHRFbGVtZW50Ci1tc3BhY2UgaW50
ZXJmYWNlTmFtZT1NYXRoTUxUZXh0RWxlbWVudAorbXNwYWNlIGludGVyZmFjZU5hbWU9TWF0aE1M
U3BhY2VFbGVtZW50CiBtc3ViIGludGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29udGFpbmVyRWxl
bWVudAogbXN1cCBpbnRlcmZhY2VOYW1lPU1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQKIG10
YWJsZSBpbnRlcmZhY2VOYW1lPU1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5jcHAK
aW5kZXggZWNiOGNiZi4uY2NlNjAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5jcHAKQEAgLTM2LDExICszNiw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKIAot
UmVuZGVyTWF0aE1MU3BhY2U6OlJlbmRlck1hdGhNTFNwYWNlKE1hdGhNTFRleHRFbGVtZW50JiBl
bGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQorUmVuZGVyTWF0aE1MU3BhY2U6OlJlbmRlck1h
dGhNTFNwYWNlKE1hdGhNTFNwYWNlRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHls
ZSkKICAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQotICAg
ICwgbV93aWR0aCgwKQotICAgICwgbV9oZWlnaHQoMCkKLSAgICAsIG1fZGVwdGgoMCkKIHsKIH0K
IApAQCAtNDgsMzQgKzQ1LDI5IEBAIHZvaWQgUmVuZGVyTWF0aE1MU3BhY2U6OmNvbXB1dGVQcmVm
ZXJyZWRMb2dpY2FsV2lkdGhzKCkKIHsKICAgICBBU1NFUlQocHJlZmVycmVkTG9naWNhbFdpZHRo
c0RpcnR5KCkpOwogCi0gICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBtX21heFByZWZl
cnJlZExvZ2ljYWxXaWR0aCA9IG1fd2lkdGg7CisgICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lk
dGggPSBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IHNwYWNlV2lkdGgoKTsKIAogICAgIHNl
dFByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eShmYWxzZSk7CiB9CiAKLXZvaWQgUmVuZGVyTWF0
aE1MU3BhY2U6OnVwZGF0ZUZyb21FbGVtZW50KCkKK0xheW91dFVuaXQgUmVuZGVyTWF0aE1MU3Bh
Y2U6OnNwYWNlV2lkdGgoKSBjb25zdAogewotICAgIGNvbnN0IGF1dG8mIHNwYWNlRWxlbWVudCA9
IGVsZW1lbnQoKTsKLQotICAgIC8vIFRoaXMgcGFyc2VzIHRoZSBtc3BhY2UgYXR0cmlidXRlcywg
dXNpbmcgMCBhcyB0aGUgZGVmYXVsdCB2YWx1ZXMuCi0gICAgbV93aWR0aCA9IDA7Ci0gICAgbV9o
ZWlnaHQgPSAwOwotICAgIG1fZGVwdGggPSAwOwotICAgIHBhcnNlTWF0aE1MTGVuZ3RoKHNwYWNl
RWxlbWVudC5nZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OndpZHRoQXR0ciksIG1fd2lkdGgsICZz
dHlsZSgpKTsKLSAgICBwYXJzZU1hdGhNTExlbmd0aChzcGFjZUVsZW1lbnQuZ2V0QXR0cmlidXRl
KE1hdGhNTE5hbWVzOjpoZWlnaHRBdHRyKSwgbV9oZWlnaHQsICZzdHlsZSgpKTsKLSAgICBwYXJz
ZU1hdGhNTExlbmd0aChzcGFjZUVsZW1lbnQuZ2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpkZXB0
aEF0dHIpLCBtX2RlcHRoLCAmc3R5bGUoKSk7CisgICAgYXV0byYgc3BhY2VFbGVtZW50ID0gZWxl
bWVudCgpOworICAgIC8vIEZJWE1FOiBOZWdhdGl2ZSB3aWR0aCB2YWx1ZXMgYXJlIG5vdCBzdXBw
b3J0ZWQgeWV0LgorICAgIHJldHVybiBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCB0b1VzZXJVbml0
cyhzcGFjZUVsZW1lbnQud2lkdGgoKSwgc3R5bGUoKSwgMCkpOworfQogCi0gICAgLy8gRklYTUU6
IE5lZ2F0aXZlIHdpZHRoIHZhbHVlcyBzaG91bGQgYmUgYWNjZXB0ZWQuCi0gICAgaWYgKG1fd2lk
dGggPCAwKQotICAgICAgICBtX3dpZHRoID0gMDsKK3ZvaWQgUmVuZGVyTWF0aE1MU3BhY2U6Omdl
dFNwYWNlSGVpZ2h0QW5kRGVwdGgoTGF5b3V0VW5pdCYgaGVpZ2h0LCBMYXlvdXRVbml0JiBkZXB0
aCkgY29uc3QKK3sKKyAgICBhdXRvJiBzcGFjZUVsZW1lbnQgPSBlbGVtZW50KCk7CisgICAgaGVp
Z2h0ID0gdG9Vc2VyVW5pdHMoc3BhY2VFbGVtZW50LmhlaWdodCgpLCBzdHlsZSgpLCAwKTsKKyAg
ICBkZXB0aCA9IHRvVXNlclVuaXRzKHNwYWNlRWxlbWVudC5kZXB0aCgpLCBzdHlsZSgpLCAwKTsK
IAogICAgIC8vIElmIHRoZSB0b3RhbCBoZWlnaHQgaXMgbmVnYXRpdmUsIHNldCB2ZXJ0aWNhbCBk
aW1lbnNpb25zIHRvIDAuCi0gICAgaWYgKG1faGVpZ2h0ICsgbV9kZXB0aCA8IDApIHsKLSAgICAg
ICAgbV9oZWlnaHQgPSAwOwotICAgICAgICBtX2RlcHRoID0gMDsKKyAgICBpZiAoaGVpZ2h0ICsg
ZGVwdGggPCAwKSB7CisgICAgICAgIGhlaWdodCA9IDA7CisgICAgICAgIGRlcHRoID0gMDsKICAg
ICB9Ci0KLSAgICBzZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKIH0KIAogdm9p
ZCBSZW5kZXJNYXRoTUxTcGFjZTo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBM
YXlvdXRVbml0KQpAQCAtODUsOCArNzcsMTAgQEAgdm9pZCBSZW5kZXJNYXRoTUxTcGFjZTo6bGF5
b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogICAgIGlmICghcmVs
YXlvdXRDaGlsZHJlbiAmJiBzaW1wbGlmaWVkTGF5b3V0KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHNldExvZ2ljYWxXaWR0aChtX3dpZHRoKTsKLSAgICBzZXRMb2dpY2FsSGVpZ2h0KG1faGVp
Z2h0ICsgbV9kZXB0aCk7CisgICAgc2V0TG9naWNhbFdpZHRoKHNwYWNlV2lkdGgoKSk7CisgICAg
TGF5b3V0VW5pdCBoZWlnaHQsIGRlcHRoOworICAgIGdldFNwYWNlSGVpZ2h0QW5kRGVwdGgoaGVp
Z2h0LCBkZXB0aCk7CisgICAgc2V0TG9naWNhbEhlaWdodChoZWlnaHQgKyBkZXB0aCk7CiAKICAg
ICBjbGVhck5lZWRzTGF5b3V0KCk7CiB9CkBAIC05OSw3ICs5Myw5IEBAIHZvaWQgUmVuZGVyTWF0
aE1MU3BhY2U6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5k
ZXJTdHlsZSoKIAogT3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxTcGFjZTo6Zmlyc3RMaW5lQmFz
ZWxpbmUoKSBjb25zdAogewotICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KG1faGVpZ2h0KTsKKyAg
ICBMYXlvdXRVbml0IGhlaWdodCwgZGVwdGg7CisgICAgZ2V0U3BhY2VIZWlnaHRBbmREZXB0aCho
ZWlnaHQsIGRlcHRoKTsKKyAgICByZXR1cm4gT3B0aW9uYWw8aW50PihoZWlnaHQpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNw
YWNlLmgKaW5kZXggYzMwOTEyNi4uNDdlYzM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaApAQCAtMjgsMjkgKzI4LDI3IEBA
CiAKICNpZiBFTkFCTEUoTUFUSE1MKQogCi0jaW5jbHVkZSAiTWF0aE1MVGV4dEVsZW1lbnQuaCIK
KyNpbmNsdWRlICJNYXRoTUxTcGFjZUVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJNYXRoTUxC
bG9jay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjbGFzcyBSZW5kZXJNYXRoTUxT
cGFjZSBmaW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVu
ZGVyTWF0aE1MU3BhY2UoTWF0aE1MVGV4dEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKLSAgICBN
YXRoTUxUZXh0RWxlbWVudCYgZWxlbWVudCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE1hdGhNTFRl
eHRFbGVtZW50Jj4obm9kZUZvck5vbkFub255bW91cygpKTsgfQorICAgIFJlbmRlck1hdGhNTFNw
YWNlKE1hdGhNTFNwYWNlRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOworICAgIE1hdGhNTFNwYWNl
RWxlbWVudCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE1hdGhNTFNwYWNl
RWxlbWVudCY+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KIAogcHJpdmF0ZToKICAgICBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gaXNBbm9ueW1vdXMoKSA/
ICJSZW5kZXJNYXRoTUxTcGFjZSAoYW5vbnltb3VzKSIgOiAiUmVuZGVyTWF0aE1MU3BhY2UiOyB9
CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTFNwYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5k
ZXJTdHlsZSogb2xkU3R5bGUpIGZpbmFsOwogICAgIGJvb2wgaXNDaGlsZEFsbG93ZWQoY29uc3Qg
UmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBmaW5hbCB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBmaW5hbDsKICAgICB2b2lkIGNv
bXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgZmluYWw7CiAgICAgdm9pZCBsYXlvdXRCbG9j
ayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAw
KSBmaW5hbDsKICAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmlu
YWw7CiAKLSAgICBMYXlvdXRVbml0IG1fd2lkdGg7Ci0gICAgTGF5b3V0VW5pdCBtX2hlaWdodDsK
LSAgICBMYXlvdXRVbml0IG1fZGVwdGg7CisgICAgTGF5b3V0VW5pdCBzcGFjZVdpZHRoKCkgY29u
c3Q7CisgICAgdm9pZCBnZXRTcGFjZUhlaWdodEFuZERlcHRoKExheW91dFVuaXQmIGhlaWdodCwg
TGF5b3V0VW5pdCYgZGVwdGgpIGNvbnN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
LSAKMi44LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279241</attachid>
            <date>2016-05-18 06:33:13 -0700</date>
            <delta_ts>2016-07-08 07:04:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0002-mathml-space.patch</filename>
            <type>text/plain</type>
            <size>22106</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">RnJvbSAwOGU2NzFmMWFhMTQ1ZGZlZmQ2M2ViMzU5M2ZhNGNmN2I4MTYzZjFkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBGcmVkZXJpYyBXYW5nIDxmcmVkLndhbmdAZnJlZS5mcj4KRGF0
ZTogVHVlLCAxNyBNYXkgMjAxNiAxNDowNjo0NyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMi8yXSBt
YXRobWwtc3BhY2UKCi0tLQogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgICAgICAgICAg
ICAgICAgICAgICAgfCAgMSArCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IDQwICsrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiAgIHwgIDggKysrCiBTb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MRWxlbWVudC5jcHAgICAgICAgICAgICB8ICA5ICsrKwogU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTEVsZW1lbnQuaCAgICAgICAgICAgICAgfCAgMyArCiBTb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcCAgICAgICB8IDY4ICsrKysrKysrKysrKysr
KysrKysrKysKIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuaCAgICAg
ICAgIHwgNTYgKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
VGV4dEVsZW1lbnQuY3BwICAgICAgICB8ICAzIC0KIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9tYXRo
dGFncy5pbiAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIC4uLi9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwIHwgNTQgKysrKysrKy0tLS0tLS0tLS0KIC4uLi9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaCAgIHwgMTMgKystLS0K
IDExIGZpbGVzIGNoYW5nZWQsIDIxMyBpbnNlcnRpb25zKCspLCA0NCBkZWxldGlvbnMoLSkKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50
LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFj
ZUVsZW1lbnQuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNDNmZGExMi4uZDAyNDg5MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKQEAgLTE5ODQsNiArMTk4NCw3IEBAIHNldChXZWJDb3JlX1NPVVJD
RVMKICAgICBtYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCiAgICAgbWF0aG1sL01hdGhNTE1l
bmNsb3NlRWxlbWVudC5jcHAKICAgICBtYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAKKyAg
ICBtYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcAogICAgIG1hdGhtbC9NYXRoTUxUZXh0RWxl
bWVudC5jcHAKIAogICAgIHBhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggOWNmMDZiOC4uMTZjNWRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE2LTA1
LTE4ICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLm9yZz4KKworICAgICAgICBNb3ZlIHBh
cnNpbmcgb2YgbXNwYWNlIGF0dHJpYnV0ZXMgdG8gYSBNYXRoTUxTcGFjZUVsZW1lbnQgY2xhc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Njc5NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgYWxyZWFkeSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6IEFkZCBNYXRoTUxTcGFjZUVsZW1lbnQgdG8gdGhlIGJ1aWxkIHN5c3RlbS4K
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAg
ICAgICAqIG1hdGhtbC9NYXRoTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhN
TEVsZW1lbnQ6OmNhY2hlZE1hdGhNTExlbmd0aCk6IEhlbHBlciBmdW5jdGlvbiB0byByZXR1cm5l
ZCB0aGUgY2FjaGVkIHBhcnNlZAorICAgICAgICB2YWx1ZSBvZiBhIE1hdGhNTCBsZW5ndGggYW5k
IHBhcnNpbmcgdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIHZhbHVlIGlmIHRoZSBjYWNoZSBp
cyBkaXJ0eS4KKyAgICAgICAgKiBtYXRobWwvTWF0aE1MRWxlbWVudC5oOiBBZGQgYSBkaXJ0eSBi
b29sZWFuIHRvIE1hdGhNTCBMZW5ndGggc3RydWN0dXJlLiBEZWNsYXJlIGNhY2hlZE1hdGhNTExl
bmd0aC4KKyAgICAgICAgKiBtYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcDogTmV3IGNsYXNz
IGZvciB0aGUgPG1zcGFjZT4gZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFNwYWNl
RWxlbWVudDo6TWF0aE1MU3BhY2VFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFNw
YWNlRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFNwYWNlRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUpOiBNYWtlIHdpZHRoLCBoZWlnaHQsIGRlcHRoIGF0dHJpYnV0ZXMg
ZGlydHkuCisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxTcGFjZUVsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcik6CisgICAgICAgICogbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5oOiBOZXcg
Y2xhc3MgZm9yIHRoZSA8bXNwYWNlPiBlbGVtZW50LgorICAgICAgICBXZSBkZWZpbmUgTWF0aE1M
IGxlbmd0aHMgZm9yIHdpZHRoLCBoZWlnaHQgYW5kIGRlcHRoIGF0dHJpYnV0ZXMgYXJlIG9uIHRo
ZSBjbGFzcyBhbmQgZXhwb3NlCisgICAgICAgIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgaGVscGVy
IGZ1bmN0aW9ucyB2aWEgbWVtb2l6YXRpb24uCisgICAgICAgICogbWF0aG1sL01hdGhNTFRleHRF
bGVtZW50LmNwcDogUmVtb3ZlIGhhbmRsaW5nIG9mIG1zcGFjZSBmcm9tIHRoaXMgY2xhc3MuCisg
ICAgICAgIChXZWJDb3JlOjpNYXRoTUxUZXh0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KToKKyAgICAgICAgKiBtYXRobWwvbWF0aHRhZ3MuaW46IENoYW5nZSB0aGUgaW50ZXJmYWNlIGZv
ciBtc3BhY2UgdG8gdXNlIHRoZSBuZXcgY2xhc3MuCisgICAgICAgICogcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxTcGFjZS5jcHA6IERvIG5vdCBzdG9yZSB3aWR0aC9oZWlnaHQvZGVwdGgg
dmFsdWVzIG9uIHRoZQorICAgICAgICByZW5kZXJlciBhbmQgaW5zdGVhZCBqdXN0IHVzZSB0aGUg
Y29ycmVzcG9uZGluZyBNYXRoTUwgbGVuZ3RocyBvbiB0aGUgZWxlbWVudCBjbGFzcy4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFNwYWNlOjpSZW5kZXJNYXRoTUxTcGFjZSk6IFVzZSBN
YXRoTUxTcGFjZUVsZW1lbnQgYW5kIHJlbW92ZSBtZW1iZXIKKyAgICAgICAgaW5pdGlhbGl6YXRp
b24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTcGFjZTo6Y29tcHV0ZVByZWZlcnJl
ZExvZ2ljYWxXaWR0aHMpOiBVc2Ugc3BhY2VXaWR0aCgpLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aE1MU3BhY2U6OnNwYWNlV2lkdGgpOiBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSB0
aGUgd2lkdGggYXR0cmlidXRlIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1M
U3BhY2U6OmdldFNwYWNlSGVpZ2h0QW5kRGVwdGgpOiBEaXR0byBmb3IgaGVpZ2h0IGFuZCBkZXB0
aC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFNwYWNlOjpsYXlvdXRCbG9jayk6IFVz
ZSB0aGUgaGVscGVyIGZ1bmN0aW9ucyB0byBnZXQgdGhlIG1zcGFjZSBtZXRyaWNzLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU3BhY2U6OmZpcnN0TGluZUJhc2VsaW5lKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTcGFjZTo6dXBkYXRlRnJvbUVsZW1lbnQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU3BhY2U6OnN0eWxlRGlk
Q2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFNwYWNlLmg6IFVzZSBNYXRoTUxTcGFjZUVsZW1lbnQsIHJlcGxhY2UgbWVtYmVycyB3aXRoIGhl
bHBlcgorICAgICAgICBmdW5jdGlvbnMgYW5kIGFuZCBtYWtlIGVsZW1lbnQoKSB1c2FibGUgZnJv
bSBhIGNvbnN0IGluc3RhbmNlLgorCiAyMDE2LTA1LTE2ICBGcmVkZXJpYyBXYW5nICA8ZndhbmdA
aWdhbGlhLm9yZz4KIAogICAgICAgICBDcmVhdGUgYSBNYXRoTUxMZW5ndGggc3RydWN0IHRvIGhh
bmRsZSB0aGUgcGFyc2luZyBvZiBNYXRoTUwgbGVuZ3RoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM0NGRhNDcuLjYyZWM3N2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTY4MzUsNiArNjgzNSw4IEBACiAJCUY5OEZGRjQ0MTFBMjY3NjIwMEY1NDhFOCAvKiBD
U1NPTVV0aWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY5OEZGRjQyMTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmNwcCAqLzsgfTsKIAkJ
Rjk4RkZGNDUxMUEyNjc2MjAwRjU0OEU4IC8qIENTU09NVXRpbHMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5OEZGRjQzMTFBMjY3NjIwMEY1NDhFOCAv
KiBDU1NPTVV0aWxzLmggKi87IH07CiAJCUY5RjBFRDdBMERCNTBDQTIwMEQxNkRCOSAvKiBYTUxI
dHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY5RjBFRDc3MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVz
dFByb2dyZXNzRXZlbnQuaCAqLzsgfTsKKwkJNEZBNjVBNkIxMTA4QUJFRDAwMjYxNUUwIC8qIE1h
dGhNTFNwYWNlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0RkE2NUE2OTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MU3BhY2VFbGVtZW50
LmNwcCAqLzsgfTsKKwkJNEZBNjVBNkMxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEZB
NjVBNkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxlbWVudC5oICovOyB9OwogCQlG
QTY1NEE2QjExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE2NTRBNjkxMTA4QUJFRDAw
MjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmNwcCAqLzsgfTsKIAkJRkE2NTRBNkMxMTA4QUJF
RDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQTY1NEE2QTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1M
VGV4dEVsZW1lbnQuaCAqLzsgfTsKIAkJRkFCRTcyRjQxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhN
TEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkFCRTcyRUQxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuY3BwICovOyB9OwpA
QCAtMTQ5MjksNiArMTQ5MzEsOCBAQAogCQlGOUYwRUQ3ODBEQjUwQ0EyMDBEMTZEQjkgLyogWE1M
SHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gWE1M
SHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkE2NTRBNjMxMTA4QUJCNzAwMjYxNUUwIC8qIG1hdGhtbC5jc3MgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LmNzczsgcGF0aCA9IG1hdGhtbC5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZB
NjU0QTY3MTEwOEFCRTIwMDI2MTVFMCAvKiBtYXRoYXR0cnMuaW4gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gbWF0aGF0dHJzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0RkE2NUE2
OTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MU3BhY2VFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTFNwYWNlRWxlbWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTRGQTY1QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxT
cGFjZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aE1MU3Bh
Y2VFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBNjU0QTY5MTEwOEFC
RUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNYXRoTUxUZXh0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZBNjU0QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxUZXh0RWxlbWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQTZFNDY2RkNEMDQxOEE5OTY2QTVCNjAg
LyogRE5TUmVzb2x2ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERO
U1Jlc29sdmVRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQ2NDYsNiAr
MjQ2NTAsOCBAQAogCQkJCUNFNkQ4OTI5NEM3QUFDRTBBRDg5QjNERCAvKiBNYXRoTUxNZW5jbG9z
ZUVsZW1lbnQuaCAqLywKIAkJCQlGNzVBMDU5QUYxNzBEOEZBQTVCOENBQkUgLyogTWF0aE1MU2Vs
ZWN0RWxlbWVudC5jcHAgKi8sCiAJCQkJNTk3ODA4NDlENDFFNkY2NUQ4MTE5OEJDIC8qIE1hdGhN
TFNlbGVjdEVsZW1lbnQuaCAqLywKKwkJCQk0RkE2NUE2OTExMDhBQkVEMDAyNjE1RTAgLyogTWF0
aE1MU3BhY2VFbGVtZW50LmNwcCAqLywKKwkJCQk0RkE2NUE2QTExMDhBQkVEMDAyNjE1RTAgLyog
TWF0aE1MU3BhY2VFbGVtZW50LmggKi8sCiAJCQkJRkE2NTRBNjkxMTA4QUJFRDAwMjYxNUUwIC8q
IE1hdGhNTFRleHRFbGVtZW50LmNwcCAqLywKIAkJCQlGQTY1NEE2QTExMDhBQkVEMDAyNjE1RTAg
LyogTWF0aE1MVGV4dEVsZW1lbnQuaCAqLywKIAkJCQlGQUJFNzJGMzEwNTlDMUVCMDBEOTk5REQg
LyogbWF0aHRhZ3MuaW4gKi8sCkBAIC0yNzE2Nyw2ICsyNzE3Myw3IEBACiAJCQkJRkFCRTcyRjkx
MDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTE1hdGhFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0NEEyOEFBRjEyREZCOEJGMDBBRTkyM0IgLyogTWF0aE1MTmFtZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQzOTA0NkUwMTJEQTI1RTE3QkFGODBBMiAvKiBNYXRoTUxPcGVyYXRvckRpY3Rpb25h
cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTRGQTY1QTZDMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRo
TUxTcGFjZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZBNjU0QTZDMTEwOEFCRUQwMDI2
MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlENURDMkMw
RjQyM0E3MzAwOEYyMEZEIC8qIE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0OUU5MTFDNzBFRjg2RDQ3MDA5RDBDQUYgLyogTWF0cml4VHJhbnNmb3JtT3Bl
cmF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMwOTUyLDYgKzMwOTU5LDcgQEAKIAkJCQlGQUJF
NzJGRTEwNTlDMjExMDBEOTk5REQgLyogTWF0aE1MTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDM5MDQ2REYxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRUQ0ODM5MENFRDY2QzMyNTVGNzJDNTkgLyogTWF0aE1M
U2VsZWN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0RkE2NUE2QjExMDhBQkVEMDAy
NjE1RTAgLyogTWF0aE1MU3BhY2VFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZBNjU0
QTZCMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0OUQ1REMyQjBGNDIzQTczMDA4RjIwRkQgLyogTWF0cml4M0RUcmFuc2Zvcm1PcGVy
YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFOTExQzYwRUY4NkQ0NzAwOUQwQ0FGIC8q
IE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcAppbmRleCAwY2I5MmZkLi4zMWMwMGFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCkBAIC0zOTYsNiArMzk2LDE1IEBAIE1h
dGhNTEVsZW1lbnQ6Okxlbmd0aCBNYXRoTUxFbGVtZW50OjpwYXJzZU1hdGhNTExlbmd0aChjb25z
dCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gbGVuZ3RoOwogfQogCitjb25zdCBNYXRoTUxF
bGVtZW50OjpMZW5ndGgmIE1hdGhNTEVsZW1lbnQ6OmNhY2hlZE1hdGhNTExlbmd0aChjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBMZW5ndGgmIGxlbmd0aCkKK3sKKyAgICBpZiAobGVuZ3RoLmRp
cnR5KSB7CisgICAgICAgIGxlbmd0aCA9IHBhcnNlTWF0aE1MTGVuZ3RoKGZhc3RHZXRBdHRyaWJ1
dGUobmFtZSkpOworICAgICAgICBsZW5ndGguZGlydHkgPSBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuIGxlbmd0aDsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKE1BVEhNTCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCmluZGV4IDkzZjRjYjAuLjYxN2YzYTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAg
ICAgc3RydWN0IExlbmd0aCB7CiAgICAgICAgIExlbmd0aFR5cGUgdHlwZSA9IExlbmd0aFR5cGU6
OlBhcnNpbmdGYWlsZWQ7CiAgICAgICAgIGZsb2F0IHZhbHVlID0gMDsKKyAgICAgICAgYm9vbCBk
aXJ0eSA9IHRydWU7CiAgICAgfTsKICAgICBzdGF0aWMgTGVuZ3RoIHBhcnNlTWF0aE1MTGVuZ3Ro
KGNvbnN0IFN0cmluZyYpOwogCkBAIC03OSw2ICs4MCw4IEBAIHByb3RlY3RlZDoKICAgICBib29s
IGlzUGhyYXNpbmdDb250ZW50KGNvbnN0IE5vZGUmKSBjb25zdDsKICAgICBib29sIGlzRmxvd0Nv
bnRlbnQoY29uc3QgTm9kZSYpIGNvbnN0OwogCisgICAgY29uc3QgTGVuZ3RoJiBjYWNoZWRNYXRo
TUxMZW5ndGgoY29uc3QgUXVhbGlmaWVkTmFtZSYsIExlbmd0aCYpOworCiBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVTZWxlY3RlZENoaWxkKCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi44ZTcyYWExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNQVRI
TUwpCisjaW5jbHVkZSAiTWF0aE1MU3BhY2VFbGVtZW50LmgiCisKKyNpbmNsdWRlICJSZW5kZXJN
YXRoTUxTcGFjZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBN
YXRoTUxOYW1lczsKKworaW5saW5lIE1hdGhNTFNwYWNlRWxlbWVudDo6TWF0aE1MU3BhY2VFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKKyAg
ICA6IE1hdGhNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCit7Cit9CisKK1JlZjxNYXRoTUxT
cGFjZUVsZW1lbnQ+IE1hdGhNTFNwYWNlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBNYXRoTUxTcGFjZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKK30KKwordm9pZCBN
YXRoTUxTcGFjZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit7CisgICAgaWYgKG5hbWUgPT0gd2lkdGhB
dHRyKQorICAgICAgICBtX3dpZHRoLmRpcnR5ID0gdHJ1ZTsKKyAgICBlbHNlIGlmIChuYW1lID09
IGhlaWdodEF0dHIpCisgICAgICAgIG1faGVpZ2h0LmRpcnR5ID0gdHJ1ZTsKKyAgICBlbHNlIGlm
IChuYW1lID09IGRlcHRoQXR0cikKKyAgICAgICAgbV9kZXB0aC5kaXJ0eSA9IHRydWU7CisKKyAg
ICBNYXRoTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7Cit9CisKK1JlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxTcGFjZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorewor
ICAgIEFTU0VSVChoYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptc3BhY2VUYWcpKTsKKyAgICByZXR1
cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MU3BhY2U+KCp0aGlzLCBXVEZNb3ZlKHN0eWxl
KSk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNQVRITUwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZDE1YzYwMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxTcGFjZUVsZW1lbnQuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIE1hdGhNTFNwYWNlRWxlbWVudF9oCisjZGVmaW5lIE1hdGhNTFNwYWNlRWxl
bWVudF9oCisKKyNpZiBFTkFCTEUoTUFUSE1MKQorI2luY2x1ZGUgIk1hdGhNTEVsZW1lbnQuaCIK
KyNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IE1hdGhNTFNwYWNlRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBNYXRoTUxFbGVtZW50IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUmVmPE1hdGhNTFNwYWNlRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Jik7CisgICAgY29uc3QgTGVuZ3RoJiB3aWR0aCgp
IHsgcmV0dXJuIGNhY2hlZE1hdGhNTExlbmd0aChNYXRoTUxOYW1lczo6d2lkdGhBdHRyLCBtX3dp
ZHRoKTsgfQorICAgIGNvbnN0IExlbmd0aCYgaGVpZ2h0KCkgeyByZXR1cm4gY2FjaGVkTWF0aE1M
TGVuZ3RoKE1hdGhNTE5hbWVzOjpoZWlnaHRBdHRyLCBtX2hlaWdodCk7IH0KKyAgICBjb25zdCBM
ZW5ndGgmIGRlcHRoKCkgeyByZXR1cm4gY2FjaGVkTWF0aE1MTGVuZ3RoKE1hdGhNTE5hbWVzOjpk
ZXB0aEF0dHIsIG1fZGVwdGgpOyB9CisKK3ByaXZhdGU6CisgICAgTWF0aE1MU3BhY2VFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Jik7CisgICAgYm9vbCBpc1By
ZXNlbnRhdGlvbk1hdGhNTCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYs
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOworCisg
ICAgTGVuZ3RoIG1fd2lkdGg7CisgICAgTGVuZ3RoIG1faGVpZ2h0OworICAgIExlbmd0aCBtX2Rl
cHRoOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1BVEhNTCkKKyNlbmRpZiAvLyBNYXRo
TUxTcGFjZUVsZW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TFRleHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVu
dC5jcHAKaW5kZXggYzFkYzRmNy4uMmIyZDg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MVGV4dEVsZW1lbnQuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAKICNpbmNsdWRlICJNYXRo
TUxOYW1lcy5oIgogI2luY2x1ZGUgIlJlbmRlck1hdGhNTE9wZXJhdG9yLmgiCi0jaW5jbHVkZSAi
UmVuZGVyTWF0aE1MU3BhY2UuaCIKICNpbmNsdWRlICJSZW5kZXJNYXRoTUxUb2tlbi5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03OSw4ICs3OCw2IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBNYXRoTUxUZXh0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYKIHsKICAgICBpZiAoaGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bW9UYWcpKQogICAgICAgICBy
ZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MT3BlcmF0b3I+KCp0aGlzLCBXVEZNb3Zl
KHN0eWxlKSk7Ci0gICAgaWYgKGhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1zcGFjZVRhZykpCi0g
ICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxTcGFjZT4oKnRoaXMsIFdU
Rk1vdmUoc3R5bGUpKTsKICAgICBpZiAoaGFzVGFnTmFtZShNYXRoTUxOYW1lczo6YW5ub3RhdGlv
blRhZykpCiAgICAgICAgIHJldHVybiBNYXRoTUxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoV1RGTW92ZShzdHlsZSksIGluc2VydGlvblBvc2l0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbWF0aG1sL21hdGh0YWdzLmluIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL21h
dGh0YWdzLmluCmluZGV4IDVkMDgxZDEuLjRmNDA4OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9tYXRodGFncy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvbWF0aHRh
Z3MuaW4KQEAgLTI0LDcgKzI0LDcgQEAgbW4gaW50ZXJmYWNlTmFtZT1NYXRoTUxUZXh0RWxlbWVu
dAogbW8gaW50ZXJmYWNlTmFtZT1NYXRoTUxUZXh0RWxlbWVudAogbXRleHQgaW50ZXJmYWNlTmFt
ZT1NYXRoTUxUZXh0RWxlbWVudAogbXMgaW50ZXJmYWNlTmFtZT1NYXRoTUxUZXh0RWxlbWVudAot
bXNwYWNlIGludGVyZmFjZU5hbWU9TWF0aE1MVGV4dEVsZW1lbnQKK21zcGFjZSBpbnRlcmZhY2VO
YW1lPU1hdGhNTFNwYWNlRWxlbWVudAogbXN1YiBpbnRlcmZhY2VOYW1lPU1hdGhNTElubGluZUNv
bnRhaW5lckVsZW1lbnQKIG1zdXAgaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWluZXJF
bGVtZW50CiBtdGFibGUgaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFNwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
U3BhY2UuY3BwCmluZGV4IGVjYjhjYmYuLjIxYWQ0ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCkBAIC0zNiwxMSAr
MzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiB1c2luZyBuYW1lc3BhY2UgTWF0aE1M
TmFtZXM7CiAKLVJlbmRlck1hdGhNTFNwYWNlOjpSZW5kZXJNYXRoTUxTcGFjZShNYXRoTUxUZXh0
RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKK1JlbmRlck1hdGhNTFNwYWNl
OjpSZW5kZXJNYXRoTUxTcGFjZShNYXRoTUxTcGFjZUVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0
eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxCbG9jayhlbGVtZW50LCBXVEZNb3ZlKHN0
eWxlKSkKLSAgICAsIG1fd2lkdGgoMCkKLSAgICAsIG1faGVpZ2h0KDApCi0gICAgLCBtX2RlcHRo
KDApCiB7CiB9CiAKQEAgLTQ4LDM0ICs0NSwyOSBAQCB2b2lkIFJlbmRlck1hdGhNTFNwYWNlOjpj
b21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiB7CiAgICAgQVNTRVJUKHByZWZlcnJlZExv
Z2ljYWxXaWR0aHNEaXJ0eSgpKTsKIAotICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0g
bV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBtX3dpZHRoOworICAgIG1fbWluUHJlZmVycmVk
TG9naWNhbFdpZHRoID0gbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBzcGFjZVdpZHRoKCk7
CiAKICAgICBzZXRQcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkoZmFsc2UpOwogfQogCi12b2lk
IFJlbmRlck1hdGhNTFNwYWNlOjp1cGRhdGVGcm9tRWxlbWVudCgpCitMYXlvdXRVbml0IFJlbmRl
ck1hdGhNTFNwYWNlOjpzcGFjZVdpZHRoKCkgY29uc3QKIHsKLSAgICBjb25zdCBhdXRvJiBzcGFj
ZUVsZW1lbnQgPSBlbGVtZW50KCk7Ci0KLSAgICAvLyBUaGlzIHBhcnNlcyB0aGUgbXNwYWNlIGF0
dHJpYnV0ZXMsIHVzaW5nIDAgYXMgdGhlIGRlZmF1bHQgdmFsdWVzLgotICAgIG1fd2lkdGggPSAw
OwotICAgIG1faGVpZ2h0ID0gMDsKLSAgICBtX2RlcHRoID0gMDsKLSAgICBwYXJzZU1hdGhNTExl
bmd0aChzcGFjZUVsZW1lbnQuZ2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjp3aWR0aEF0dHIpLCBt
X3dpZHRoLCAmc3R5bGUoKSk7Ci0gICAgcGFyc2VNYXRoTUxMZW5ndGgoc3BhY2VFbGVtZW50Lmdl
dEF0dHJpYnV0ZShNYXRoTUxOYW1lczo6aGVpZ2h0QXR0ciksIG1faGVpZ2h0LCAmc3R5bGUoKSk7
Ci0gICAgcGFyc2VNYXRoTUxMZW5ndGgoc3BhY2VFbGVtZW50LmdldEF0dHJpYnV0ZShNYXRoTUxO
YW1lczo6ZGVwdGhBdHRyKSwgbV9kZXB0aCwgJnN0eWxlKCkpOworICAgIGF1dG8mIHNwYWNlRWxl
bWVudCA9IGVsZW1lbnQoKTsKKyAgICAvLyBGSVhNRTogTmVnYXRpdmUgd2lkdGggdmFsdWVzIGFy
ZSBub3Qgc3VwcG9ydGVkIHlldC4KKyAgICByZXR1cm4gc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwg
dG9Vc2VyVW5pdHMoc3BhY2VFbGVtZW50LndpZHRoKCksIHN0eWxlKCksIDApKTsKK30KIAotICAg
IC8vIEZJWE1FOiBOZWdhdGl2ZSB3aWR0aCB2YWx1ZXMgc2hvdWxkIGJlIGFjY2VwdGVkLgotICAg
IGlmIChtX3dpZHRoIDwgMCkKLSAgICAgICAgbV93aWR0aCA9IDA7Cit2b2lkIFJlbmRlck1hdGhN
TFNwYWNlOjpnZXRTcGFjZUhlaWdodEFuZERlcHRoKExheW91dFVuaXQmIGhlaWdodCwgTGF5b3V0
VW5pdCYgZGVwdGgpIGNvbnN0Cit7CisgICAgYXV0byYgc3BhY2VFbGVtZW50ID0gZWxlbWVudCgp
OworICAgIGhlaWdodCA9IHRvVXNlclVuaXRzKHNwYWNlRWxlbWVudC5oZWlnaHQoKSwgc3R5bGUo
KSwgMCk7CisgICAgZGVwdGggPSB0b1VzZXJVbml0cyhzcGFjZUVsZW1lbnQuZGVwdGgoKSwgc3R5
bGUoKSwgMCk7CiAKICAgICAvLyBJZiB0aGUgdG90YWwgaGVpZ2h0IGlzIG5lZ2F0aXZlLCBzZXQg
dmVydGljYWwgZGltZW5zaW9ucyB0byAwLgotICAgIGlmIChtX2hlaWdodCArIG1fZGVwdGggPCAw
KSB7Ci0gICAgICAgIG1faGVpZ2h0ID0gMDsKLSAgICAgICAgbV9kZXB0aCA9IDA7CisgICAgaWYg
KGhlaWdodCArIGRlcHRoIDwgMCkgeworICAgICAgICBoZWlnaHQgPSAwOworICAgICAgICBkZXB0
aCA9IDA7CiAgICAgfQotCi0gICAgc2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7
CiB9CiAKIHZvaWQgUmVuZGVyTWF0aE1MU3BhY2U6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRD
aGlsZHJlbiwgTGF5b3V0VW5pdCkKQEAgLTg1LDIxICs3NywxOSBAQCB2b2lkIFJlbmRlck1hdGhN
TFNwYWNlOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQpCiAg
ICAgaWYgKCFyZWxheW91dENoaWxkcmVuICYmIHNpbXBsaWZpZWRMYXlvdXQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgc2V0TG9naWNhbFdpZHRoKG1fd2lkdGgpOwotICAgIHNldExvZ2ljYWxI
ZWlnaHQobV9oZWlnaHQgKyBtX2RlcHRoKTsKKyAgICBzZXRMb2dpY2FsV2lkdGgoc3BhY2VXaWR0
aCgpKTsKKyAgICBMYXlvdXRVbml0IGhlaWdodCwgZGVwdGg7CisgICAgZ2V0U3BhY2VIZWlnaHRB
bmREZXB0aChoZWlnaHQsIGRlcHRoKTsKKyAgICBzZXRMb2dpY2FsSGVpZ2h0KGhlaWdodCArIGRl
cHRoKTsKIAogICAgIGNsZWFyTmVlZHNMYXlvdXQoKTsKIH0KIAotdm9pZCBSZW5kZXJNYXRoTUxT
cGFjZTo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0
eWxlKiBvbGRTdHlsZSkKLXsKLSAgICBSZW5kZXJNYXRoTUxCbG9jazo6c3R5bGVEaWRDaGFuZ2Uo
ZGlmZiwgb2xkU3R5bGUpOwotICAgIHVwZGF0ZUZyb21FbGVtZW50KCk7Ci19Ci0KIE9wdGlvbmFs
PGludD4gUmVuZGVyTWF0aE1MU3BhY2U6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gT3B0aW9uYWw8aW50PihtX2hlaWdodCk7CisgICAgTGF5b3V0VW5pdCBoZWlnaHQs
IGRlcHRoOworICAgIGdldFNwYWNlSGVpZ2h0QW5kRGVwdGgoaGVpZ2h0LCBkZXB0aCk7CisgICAg
cmV0dXJuIE9wdGlvbmFsPGludD4oaGVpZ2h0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oCmluZGV4IGMzMDkxMjYu
LjcyZDFlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MU3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFNwYWNlLmgKQEAgLTI4LDI5ICsyOCwyNiBAQAogCiAjaWYgRU5BQkxFKE1BVEhN
TCkKIAotI2luY2x1ZGUgIk1hdGhNTFRleHRFbGVtZW50LmgiCisjaW5jbHVkZSAiTWF0aE1MU3Bh
Y2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyTWF0aE1MQmxvY2suaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIAogY2xhc3MgUmVuZGVyTWF0aE1MU3BhY2UgZmluYWwgOiBwdWJsaWMg
UmVuZGVyTWF0aE1MQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlck1hdGhNTFNwYWNlKE1hdGhN
TFRleHRFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7Ci0gICAgTWF0aE1MVGV4dEVsZW1lbnQmIGVs
ZW1lbnQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxNYXRoTUxUZXh0RWxlbWVudCY+KG5vZGVGb3JO
b25Bbm9ueW1vdXMoKSk7IH0KKyAgICBSZW5kZXJNYXRoTUxTcGFjZShNYXRoTUxTcGFjZUVsZW1l
bnQmLCBSZW5kZXJTdHlsZSYmKTsKKyAgICBNYXRoTUxTcGFjZUVsZW1lbnQmIGVsZW1lbnQoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxNYXRoTUxTcGFjZUVsZW1lbnQmPihub2RlRm9yTm9u
QW5vbnltb3VzKCkpOyB9CiAKIHByaXZhdGU6CiAgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIGlzQW5vbnltb3VzKCkgPyAiUmVuZGVyTWF0aE1MU3BhY2Ug
KGFub255bW91cykiIDogIlJlbmRlck1hdGhNTFNwYWNlIjsgfQogICAgIGJvb2wgaXNSZW5kZXJN
YXRoTUxTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHN0eWxl
RGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBm
aW5hbDsKICAgICBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0
IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2b2lkIHVw
ZGF0ZUZyb21FbGVtZW50KCkgZmluYWw7CiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNh
bFdpZHRocygpIGZpbmFsOwogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxk
cmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMCkgZmluYWw7CiAgICAgT3B0aW9u
YWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwogCi0gICAgTGF5b3V0VW5p
dCBtX3dpZHRoOwotICAgIExheW91dFVuaXQgbV9oZWlnaHQ7Ci0gICAgTGF5b3V0VW5pdCBtX2Rl
cHRoOworICAgIExheW91dFVuaXQgc3BhY2VXaWR0aCgpIGNvbnN0OworICAgIHZvaWQgZ2V0U3Bh
Y2VIZWlnaHRBbmREZXB0aChMYXlvdXRVbml0JiBoZWlnaHQsIExheW91dFVuaXQmIGRlcHRoKSBj
b25zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLS0gCjIuOC4xCgo=
</data>
<flag name="review"
          id="303298"
          type_id="1"
          status="-"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283153</attachid>
            <date>2016-07-08 07:04:21 -0700</date>
            <delta_ts>2016-07-11 13:48:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0002-mathmlspace.patch</filename>
            <type>text/plain</type>
            <size>22264</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">RnJvbSA1NDQ3ZmIzMTg2YmRkZjg0YTY0Yzk5YjExMjhiNDk4NzdhZDNiZjMxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBGcmVkZXJpYyBXYW5nIDxmcmVkLndhbmdAZnJlZS5mcj4KRGF0
ZTogRnJpLCA4IEp1bCAyMDE2IDE1OjU5OjE5ICswMjAwClN1YmplY3Q6IFtQQVRDSCAyLzJdIG1h
dGhtbHNwYWNlCgotLS0KIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAg
ICAgICAgICAgIHwgIDEgKwogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCA0MCArKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qICAgfCAgOCArKysKIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxFbGVtZW50LmNwcCAgICAgICAgICAgIHwgIDkgKysrCiBTb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MRWxlbWVudC5oICAgICAgICAgICAgICB8ICAzICsKIFNvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuY3BwICAgICAgIHwgODMgKysrKysrKysrKysrKysrKysr
KysrKwogU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5oICAgICAgICAg
fCA1NCArKysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVt
ZW50LmNwcCAgICAgICAgfCAgMyAtCiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvbWF0aHRhZ3MuaW4g
ICAgICAgICAgICAgICAgICB8ICAyICstCiAuLi4vV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFNwYWNlLmNwcCB8IDU0ICsrKysrKy0tLS0tLS0tCiAuLi4vV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmggICB8IDEzICsrLS0KIDExIGZpbGVzIGNo
YW5nZWQsIDIyNiBpbnNlcnRpb25zKCspLCA0NCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcAogY3JlYXRl
IG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuaAoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTA0Mzc3Zi4uMmQ5ODE3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE5ODcsNiArMTk4Nyw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBtYXRo
bWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCiAgICAgbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVu
dC5jcHAKICAgICBtYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAKKyAgICBtYXRobWwvTWF0
aE1MU3BhY2VFbGVtZW50LmNwcAogICAgIG1hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAKIAog
ICAgIHBhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTcyNmM1MS4u
NWVlZDgzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE2LTA1LTE4ICBGcmVkZXJp
YyBXYW5nICA8ZndhbmdAaWdhbGlhLm9yZz4KKworICAgICAgICBNb3ZlIHBhcnNpbmcgb2YgbXNw
YWNlIGF0dHJpYnV0ZXMgdG8gYSBNYXRoTUxTcGFjZUVsZW1lbnQgY2xhc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Njc5NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYWxyZWFk
eSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
IEFkZCBNYXRoTUxTcGFjZUVsZW1lbnQgdG8gdGhlIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIG1hdGht
bC9NYXRoTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVsZW1lbnQ6OmNh
Y2hlZE1hdGhNTExlbmd0aCk6IEhlbHBlciBmdW5jdGlvbiB0byByZXR1cm5lZCB0aGUgY2FjaGVk
IHBhcnNlZAorICAgICAgICB2YWx1ZSBvZiBhIE1hdGhNTCBsZW5ndGggYW5kIHBhcnNpbmcgdGhl
IGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIHZhbHVlIGlmIHRoZSBjYWNoZSBpcyBkaXJ0eS4KKyAg
ICAgICAgKiBtYXRobWwvTWF0aE1MRWxlbWVudC5oOiBBZGQgYSBkaXJ0eSBib29sZWFuIHRvIE1h
dGhNTCBMZW5ndGggc3RydWN0dXJlLiBEZWNsYXJlIGNhY2hlZE1hdGhNTExlbmd0aC4KKyAgICAg
ICAgKiBtYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcDogTmV3IGNsYXNzIGZvciB0aGUgPG1z
cGFjZT4gZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFNwYWNlRWxlbWVudDo6TWF0
aE1MU3BhY2VFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFNwYWNlRWxlbWVudDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFNwYWNlRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOiBNYWtlIHdpZHRoLCBoZWlnaHQsIGRlcHRoIGF0dHJpYnV0ZXMgZGlydHkuCisgICAg
ICAgIChXZWJDb3JlOjpNYXRoTUxTcGFjZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6
CisgICAgICAgICogbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5oOiBOZXcgY2xhc3MgZm9yIHRo
ZSA8bXNwYWNlPiBlbGVtZW50LgorICAgICAgICBXZSBkZWZpbmUgTWF0aE1MIGxlbmd0aHMgZm9y
IHdpZHRoLCBoZWlnaHQgYW5kIGRlcHRoIGF0dHJpYnV0ZXMgYXJlIG9uIHRoZSBjbGFzcyBhbmQg
ZXhwb3NlCisgICAgICAgIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgaGVscGVyIGZ1bmN0aW9ucyB2
aWEgbWVtb2l6YXRpb24uCisgICAgICAgICogbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcDog
UmVtb3ZlIGhhbmRsaW5nIG9mIG1zcGFjZSBmcm9tIHRoaXMgY2xhc3MuCisgICAgICAgIChXZWJD
b3JlOjpNYXRoTUxUZXh0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAg
KiBtYXRobWwvbWF0aHRhZ3MuaW46IENoYW5nZSB0aGUgaW50ZXJmYWNlIGZvciBtc3BhY2UgdG8g
dXNlIHRoZSBuZXcgY2xhc3MuCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxTcGFjZS5jcHA6IERvIG5vdCBzdG9yZSB3aWR0aC9oZWlnaHQvZGVwdGggdmFsdWVzIG9uIHRo
ZQorICAgICAgICByZW5kZXJlciBhbmQgaW5zdGVhZCBqdXN0IHVzZSB0aGUgY29ycmVzcG9uZGlu
ZyBNYXRoTUwgbGVuZ3RocyBvbiB0aGUgZWxlbWVudCBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTFNwYWNlOjpSZW5kZXJNYXRoTUxTcGFjZSk6IFVzZSBNYXRoTUxTcGFjZUVs
ZW1lbnQgYW5kIHJlbW92ZSBtZW1iZXIKKyAgICAgICAgaW5pdGlhbGl6YXRpb24uCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTcGFjZTo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0
aHMpOiBVc2Ugc3BhY2VXaWR0aCgpLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU3Bh
Y2U6OnNwYWNlV2lkdGgpOiBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSB0aGUgd2lkdGggYXR0
cmlidXRlIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU3BhY2U6OmdldFNw
YWNlSGVpZ2h0QW5kRGVwdGgpOiBEaXR0byBmb3IgaGVpZ2h0IGFuZCBkZXB0aC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck1hdGhNTFNwYWNlOjpsYXlvdXRCbG9jayk6IFVzZSB0aGUgaGVscGVy
IGZ1bmN0aW9ucyB0byBnZXQgdGhlIG1zcGFjZSBtZXRyaWNzLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MU3BhY2U6OmZpcnN0TGluZUJhc2VsaW5lKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJNYXRoTUxTcGFjZTo6dXBkYXRlRnJvbUVsZW1lbnQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU3BhY2U6OnN0eWxlRGlkQ2hhbmdlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmg6IFVz
ZSBNYXRoTUxTcGFjZUVsZW1lbnQsIHJlcGxhY2UgbWVtYmVycyB3aXRoIGhlbHBlcgorICAgICAg
ICBmdW5jdGlvbnMgYW5kIGFuZCBtYWtlIGVsZW1lbnQoKSB1c2FibGUgZnJvbSBhIGNvbnN0IGlu
c3RhbmNlLgorCiAyMDE2LTA3LTA4ICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLm9yZz4K
IAogICAgICAgICBDcmVhdGUgYSBNYXRoTUxMZW5ndGggc3RydWN0IHRvIGhhbmRsZSB0aGUgcGFy
c2luZyBvZiBNYXRoTUwgbGVuZ3RoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk4MDZhM2EuLjA3YmQyMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY5MDQs
NiArNjkwNCw4IEBACiAJCUY5OEZGRjQ0MTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5OEZGRjQy
MTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmNwcCAqLzsgfTsKIAkJRjk4RkZGNDUxMUEy
Njc2MjAwRjU0OEU4IC8qIENTU09NVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY5OEZGRjQzMTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxz
LmggKi87IH07CiAJCUY5RjBFRDdBMERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFBy
b2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY5RjBFRDc3MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnQuaCAqLzsgfTsKKwkJNEZBNjVBNkIxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
RkE2NUE2OTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MU3BhY2VFbGVtZW50LmNwcCAqLzsgfTsK
KwkJNEZBNjVBNkMxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEZBNjVBNkExMTA4QUJF
RDAwMjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxlbWVudC5oICovOyB9OwogCQlGQTY1NEE2QjExMDhB
QkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE2NTRBNjkxMTA4QUJFRDAwMjYxNUUwIC8qIE1h
dGhNTFRleHRFbGVtZW50LmNwcCAqLzsgfTsKIAkJRkE2NTRBNkMxMTA4QUJFRDAwMjYxNUUwIC8q
IE1hdGhNTFRleHRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGQTY1NEE2QTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQu
aCAqLzsgfTsKIAkJRkFCRTcyRjQxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkFCRTcyRUQx
MDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuY3BwICovOyB9OwpAQCAtMTUwNzcsNiAr
MTUwNzksOCBAQAogCQlGOUYwRUQ3ODBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQ
cm9ncmVzc0V2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gWE1MSHR0cFJlcXVlc3RQ
cm9ncmVzc0V2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkE2NTRBNjMx
MTA4QUJCNzAwMjYxNUUwIC8qIG1hdGhtbC5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9
IG1hdGhtbC5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBNjU0QTY3MTEwOEFC
RTIwMDI2MTVFMCAvKiBtYXRoYXR0cnMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gbWF0aGF0
dHJzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0RkE2NUE2OTExMDhBQkVEMDAy
NjE1RTAgLyogTWF0aE1MU3BhY2VFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1hdGhNTFNwYWNlRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTRGQTY1QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxTcGFjZUVsZW1lbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aE1MU3BhY2VFbGVtZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBNjU0QTY5MTEwOEFCRUQwMDI2MTVFMCAv
KiBNYXRoTUxUZXh0RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNYXRoTUxUZXh0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZBNjU0QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxUZXh0RWxlbWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGQTZFNDY2RkNEMDQxOEE5OTY2QTVCNjAgLyogRE5TUmVzb2x2
ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEROU1Jlc29sdmVRdWV1
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQ5MDMsNiArMjQ5MDcsOCBAQAog
CQkJCUNFNkQ4OTI5NEM3QUFDRTBBRDg5QjNERCAvKiBNYXRoTUxNZW5jbG9zZUVsZW1lbnQuaCAq
LywKIAkJCQlGNzVBMDU5QUYxNzBEOEZBQTVCOENBQkUgLyogTWF0aE1MU2VsZWN0RWxlbWVudC5j
cHAgKi8sCiAJCQkJNTk3ODA4NDlENDFFNkY2NUQ4MTE5OEJDIC8qIE1hdGhNTFNlbGVjdEVsZW1l
bnQuaCAqLywKKwkJCQk0RkE2NUE2OTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MU3BhY2VFbGVt
ZW50LmNwcCAqLywKKwkJCQk0RkE2NUE2QTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MU3BhY2VF
bGVtZW50LmggKi8sCiAJCQkJRkE2NTRBNjkxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRF
bGVtZW50LmNwcCAqLywKIAkJCQlGQTY1NEE2QTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4
dEVsZW1lbnQuaCAqLywKIAkJCQlGQUJFNzJGMzEwNTlDMUVCMDBEOTk5REQgLyogbWF0aHRhZ3Mu
aW4gKi8sCkBAIC0yNzQ0MCw2ICsyNzQ0Niw3IEBACiAJCQkJNDRBMjhBQUYxMkRGQjhCRjAwQUU5
MjNCIC8qIE1hdGhNTE5hbWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzkwNDZFMDEyREEyNUUx
N0JBRjgwQTIgLyogTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MzkxNzZFMDEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCTRGQTY1QTZDMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxTcGFjZUVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUZBNjU0QTZDMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5MDQ2RUExMkRBMjVFODEyQUY4MEFDIC8q
IE1hdGhPcGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlENURDMkMwRjQyM0E3MzAwOEYy
MEZEIC8qIE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMx
MjY4LDYgKzMxMjc1LDcgQEAKIAkJCQk0MzkwNDZERjEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1M
T3BlcmF0b3JEaWN0aW9uYXJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzOTE3NkRGMTJEQTI1
RTE3QkFGODBBMiAvKiBNYXRoTUxTdHlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRUQ0ODM5
MENFRDY2QzMyNTVGNzJDNTkgLyogTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk0RkE2NUE2QjExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MU3BhY2VFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUZBNjU0QTZCMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxU
ZXh0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzkwNDZFOTEyREEyNUU4MTJBRjgw
QUMgLyogTWF0aE9wZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RDVEQzJCMEY0MjNB
NzMwMDhGMjBGRCAvKiBNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcAppbmRleCBkODczNjg2Li42
YmVjMmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCkBAIC00MjQs
NiArNDI0LDE1IEBAIE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCBNYXRoTUxFbGVtZW50OjpwYXJzZU1h
dGhNTExlbmd0aChjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gcGFyc2VOYW1lZFNw
YWNlKHN0cmluZ1ZpZXcpOwogfQogCitjb25zdCBNYXRoTUxFbGVtZW50OjpMZW5ndGgmIE1hdGhN
TEVsZW1lbnQ6OmNhY2hlZE1hdGhNTExlbmd0aChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBM
ZW5ndGgmIGxlbmd0aCkKK3sKKyAgICBpZiAobGVuZ3RoLmRpcnR5KSB7CisgICAgICAgIGxlbmd0
aCA9IHBhcnNlTWF0aE1MTGVuZ3RoKGZhc3RHZXRBdHRyaWJ1dGUobmFtZSkpOworICAgICAgICBs
ZW5ndGguZGlydHkgPSBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIGxlbmd0aDsKK30KKwogfQog
CiAjZW5kaWYgLy8gRU5BQkxFKE1BVEhNTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVu
dC5oCmluZGV4IGYzYTRkMTAuLjliMDJiMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVs
ZW1lbnQuaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgc3RydWN0IExlbmd0aCB7CiAg
ICAgICAgIExlbmd0aFR5cGUgdHlwZSB7IExlbmd0aFR5cGU6OlBhcnNpbmdGYWlsZWQgfTsKICAg
ICAgICAgZmxvYXQgdmFsdWUgeyAwIH07CisgICAgICAgIGJvb2wgZGlydHkgeyB0cnVlIH07CiAg
ICAgfTsKICAgICBzdGF0aWMgTGVuZ3RoIHBhcnNlTWF0aE1MTGVuZ3RoKGNvbnN0IFN0cmluZyYp
OwogCkBAIC03OSw2ICs4MCw4IEBAIHByb3RlY3RlZDoKICAgICBib29sIGlzUGhyYXNpbmdDb250
ZW50KGNvbnN0IE5vZGUmKSBjb25zdDsKICAgICBib29sIGlzRmxvd0NvbnRlbnQoY29uc3QgTm9k
ZSYpIGNvbnN0OwogCisgICAgY29uc3QgTGVuZ3RoJiBjYWNoZWRNYXRoTUxMZW5ndGgoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIExlbmd0aCYpOworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVTZWxlY3RlZENoaWxkKCkgeyB9CiAgICAgc3RhdGljIExlbmd0aCBwYXJzZU51bWJlckFu
ZFVuaXQoY29uc3QgU3RyaW5nVmlldyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTFNwYWNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
U3BhY2VFbGVtZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OGMx
ZTc3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNwYWNl
RWxlbWVudC5jcHAKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJ
Z2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNQVRITUwpCisjaW5jbHVkZSAiTWF0
aE1MU3BhY2VFbGVtZW50LmgiCisKKyNpbmNsdWRlICJSZW5kZXJNYXRoTUxTcGFjZS5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKKworaW5s
aW5lIE1hdGhNTFNwYWNlRWxlbWVudDo6TWF0aE1MU3BhY2VFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKKyAgICA6IE1hdGhNTEVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpCit7Cit9CisKK1JlZjxNYXRoTUxTcGFjZUVsZW1lbnQ+IE1hdGhN
TFNwYWNlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50JiBkb2N1bWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYXRoTUxTcGFjZUVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKK30KKworY29uc3QgTWF0aE1MRWxlbWVudDo6TGVu
Z3RoJiBNYXRoTUxTcGFjZUVsZW1lbnQ6OndpZHRoKCkKK3sKKyAgICByZXR1cm4gY2FjaGVkTWF0
aE1MTGVuZ3RoKE1hdGhNTE5hbWVzOjp3aWR0aEF0dHIsIG1fd2lkdGgpOworfQorCitjb25zdCBN
YXRoTUxFbGVtZW50OjpMZW5ndGgmIE1hdGhNTFNwYWNlRWxlbWVudDo6aGVpZ2h0KCkKK3sKKyAg
ICByZXR1cm4gY2FjaGVkTWF0aE1MTGVuZ3RoKE1hdGhNTE5hbWVzOjpoZWlnaHRBdHRyLCBtX2hl
aWdodCk7Cit9CisKK2NvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgTWF0aE1MU3BhY2VFbGVt
ZW50OjpkZXB0aCgpCit7CisgICAgcmV0dXJuIGNhY2hlZE1hdGhNTExlbmd0aChNYXRoTUxOYW1l
czo6ZGVwdGhBdHRyLCBtX2RlcHRoKTsKK30KKwordm9pZCBNYXRoTUxTcGFjZUVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUpCit7CisgICAgaWYgKG5hbWUgPT0gd2lkdGhBdHRyKQorICAgICAgICBtX3dpZHRo
LmRpcnR5ID0gdHJ1ZTsKKyAgICBlbHNlIGlmIChuYW1lID09IGhlaWdodEF0dHIpCisgICAgICAg
IG1faGVpZ2h0LmRpcnR5ID0gdHJ1ZTsKKyAgICBlbHNlIGlmIChuYW1lID09IGRlcHRoQXR0cikK
KyAgICAgICAgbV9kZXB0aC5kaXJ0eSA9IHRydWU7CisKKyAgICBNYXRoTUxFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7Cit9CisKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBN
YXRoTUxTcGFjZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0
eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQoreworICAgIEFTU0VSVChoYXNUYWdOYW1l
KE1hdGhNTE5hbWVzOjptc3BhY2VUYWcpKTsKKyAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVu
ZGVyTWF0aE1MU3BhY2U+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7Cit9CisKK30KKworI2VuZGlm
IC8vIEVOQUJMRShNQVRITUwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MU3BhY2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVt
ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY4ZTE2OAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuaApA
QCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1hdGhNTFNw
YWNlRWxlbWVudF9oCisjZGVmaW5lIE1hdGhNTFNwYWNlRWxlbWVudF9oCisKKyNpZiBFTkFCTEUo
TUFUSE1MKQorI2luY2x1ZGUgIk1hdGhNTEVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBNYXRoTUxTcGFjZUVsZW1lbnQgZmluYWwgOiBwdWJsaWMgTWF0aE1MRWxlbWVu
dCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxNYXRoTUxTcGFjZUVsZW1lbnQ+IGNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOworICAgIGNvbnN0IExlbmd0
aCYgd2lkdGgoKTsKKyAgICBjb25zdCBMZW5ndGgmIGhlaWdodCgpOworICAgIGNvbnN0IExlbmd0
aCYgZGVwdGgoKTsKK3ByaXZhdGU6CisgICAgTWF0aE1MU3BhY2VFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Jik7CisgICAgYm9vbCBpc1ByZXNlbnRhdGlvbk1h
dGhNTCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpIGZpbmFsOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOworCisgICAgTGVuZ3RoIG1f
d2lkdGg7CisgICAgTGVuZ3RoIG1faGVpZ2h0OworICAgIExlbmd0aCBtX2RlcHRoOworfTsKKwor
fQorCisjZW5kaWYgLy8gRU5BQkxFKE1BVEhNTCkKKyNlbmRpZiAvLyBNYXRoTUxTcGFjZUVsZW1l
bnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAKaW5kZXgg
Y2YzMDY3NS4uMmFkMjFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TFRleHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVs
ZW1lbnQuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAKICNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgog
I2luY2x1ZGUgIlJlbmRlck1hdGhNTE9wZXJhdG9yLmgiCi0jaW5jbHVkZSAiUmVuZGVyTWF0aE1M
U3BhY2UuaCIKICNpbmNsdWRlICJSZW5kZXJNYXRoTUxUb2tlbi5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC03OSw4ICs3OCw2IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxU
ZXh0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYKIHsKICAgICBp
ZiAoaGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bW9UYWcpKQogICAgICAgICByZXR1cm4gY3JlYXRl
UmVuZGVyZXI8UmVuZGVyTWF0aE1MT3BlcmF0b3I+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7Ci0g
ICAgaWYgKGhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1zcGFjZVRhZykpCi0gICAgICAgIHJldHVy
biBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxTcGFjZT4oKnRoaXMsIFdURk1vdmUoc3R5bGUp
KTsKICAgICBpZiAoaGFzVGFnTmFtZShNYXRoTUxOYW1lczo6YW5ub3RhdGlvblRhZykpCiAgICAg
ICAgIHJldHVybiBNYXRoTUxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoV1RGTW92ZShz
dHlsZSksIGluc2VydGlvblBvc2l0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bWF0aG1sL21hdGh0YWdzLmluIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL21hdGh0YWdzLmluCmlu
ZGV4IDNlNTMwNTYuLjQ0ZGM4MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9t
YXRodGFncy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvbWF0aHRhZ3MuaW4KQEAgLTI1
LDcgKzI1LDcgQEAgbW4gaW50ZXJmYWNlTmFtZT1NYXRoTUxUZXh0RWxlbWVudAogbW8gaW50ZXJm
YWNlTmFtZT1NYXRoTUxUZXh0RWxlbWVudAogbXRleHQgaW50ZXJmYWNlTmFtZT1NYXRoTUxUZXh0
RWxlbWVudAogbXMgaW50ZXJmYWNlTmFtZT1NYXRoTUxUZXh0RWxlbWVudAotbXNwYWNlIGludGVy
ZmFjZU5hbWU9TWF0aE1MVGV4dEVsZW1lbnQKK21zcGFjZSBpbnRlcmZhY2VOYW1lPU1hdGhNTFNw
YWNlRWxlbWVudAogbXN1YiBpbnRlcmZhY2VOYW1lPU1hdGhNTElubGluZUNvbnRhaW5lckVsZW1l
bnQKIG1zdXAgaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50CiBtdGFi
bGUgaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCmlu
ZGV4IDBjOTc3MDQuLjVlZjgxMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCkBAIC0zNiwxMSArMzYsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKIAotUmVuZGVy
TWF0aE1MU3BhY2U6OlJlbmRlck1hdGhNTFNwYWNlKE1hdGhNTFRleHRFbGVtZW50JiBlbGVtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQorUmVuZGVyTWF0aE1MU3BhY2U6OlJlbmRlck1hdGhNTFNw
YWNlKE1hdGhNTFNwYWNlRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAg
ICA6IFJlbmRlck1hdGhNTEJsb2NrKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQotICAgICwgbV93
aWR0aCgwKQotICAgICwgbV9oZWlnaHQoMCkKLSAgICAsIG1fZGVwdGgoMCkKIHsKIH0KIApAQCAt
NDgsMzQgKzQ1LDI5IEBAIHZvaWQgUmVuZGVyTWF0aE1MU3BhY2U6OmNvbXB1dGVQcmVmZXJyZWRM
b2dpY2FsV2lkdGhzKCkKIHsKICAgICBBU1NFUlQocHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5
KCkpOwogCi0gICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBtX21heFByZWZlcnJlZExv
Z2ljYWxXaWR0aCA9IG1fd2lkdGg7CisgICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBt
X21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IHNwYWNlV2lkdGgoKTsKIAogICAgIHNldFByZWZl
cnJlZExvZ2ljYWxXaWR0aHNEaXJ0eShmYWxzZSk7CiB9CiAKLXZvaWQgUmVuZGVyTWF0aE1MU3Bh
Y2U6OnVwZGF0ZUZyb21FbGVtZW50KCkKK0xheW91dFVuaXQgUmVuZGVyTWF0aE1MU3BhY2U6OnNw
YWNlV2lkdGgoKSBjb25zdAogewotICAgIGNvbnN0IGF1dG8mIHNwYWNlRWxlbWVudCA9IGVsZW1l
bnQoKTsKLQotICAgIC8vIFRoaXMgcGFyc2VzIHRoZSBtc3BhY2UgYXR0cmlidXRlcywgdXNpbmcg
MCBhcyB0aGUgZGVmYXVsdCB2YWx1ZXMuCi0gICAgbV93aWR0aCA9IDA7Ci0gICAgbV9oZWlnaHQg
PSAwOwotICAgIG1fZGVwdGggPSAwOwotICAgIHBhcnNlTWF0aE1MTGVuZ3RoKHNwYWNlRWxlbWVu
dC5nZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OndpZHRoQXR0ciksIG1fd2lkdGgsICZzdHlsZSgp
KTsKLSAgICBwYXJzZU1hdGhNTExlbmd0aChzcGFjZUVsZW1lbnQuZ2V0QXR0cmlidXRlKE1hdGhN
TE5hbWVzOjpoZWlnaHRBdHRyKSwgbV9oZWlnaHQsICZzdHlsZSgpKTsKLSAgICBwYXJzZU1hdGhN
TExlbmd0aChzcGFjZUVsZW1lbnQuZ2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpkZXB0aEF0dHIp
LCBtX2RlcHRoLCAmc3R5bGUoKSk7CisgICAgYXV0byYgc3BhY2VFbGVtZW50ID0gZWxlbWVudCgp
OworICAgIC8vIEZJWE1FOiBOZWdhdGl2ZSB3aWR0aCB2YWx1ZXMgYXJlIG5vdCBzdXBwb3J0ZWQg
eWV0LgorICAgIHJldHVybiBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCB0b1VzZXJVbml0cyhzcGFj
ZUVsZW1lbnQud2lkdGgoKSwgc3R5bGUoKSwgMCkpOworfQogCi0gICAgLy8gRklYTUU6IE5lZ2F0
aXZlIHdpZHRoIHZhbHVlcyBzaG91bGQgYmUgYWNjZXB0ZWQuCi0gICAgaWYgKG1fd2lkdGggPCAw
KQotICAgICAgICBtX3dpZHRoID0gMDsKK3ZvaWQgUmVuZGVyTWF0aE1MU3BhY2U6OmdldFNwYWNl
SGVpZ2h0QW5kRGVwdGgoTGF5b3V0VW5pdCYgaGVpZ2h0LCBMYXlvdXRVbml0JiBkZXB0aCkgY29u
c3QKK3sKKyAgICBhdXRvJiBzcGFjZUVsZW1lbnQgPSBlbGVtZW50KCk7CisgICAgaGVpZ2h0ID0g
dG9Vc2VyVW5pdHMoc3BhY2VFbGVtZW50LmhlaWdodCgpLCBzdHlsZSgpLCAwKTsKKyAgICBkZXB0
aCA9IHRvVXNlclVuaXRzKHNwYWNlRWxlbWVudC5kZXB0aCgpLCBzdHlsZSgpLCAwKTsKIAogICAg
IC8vIElmIHRoZSB0b3RhbCBoZWlnaHQgaXMgbmVnYXRpdmUsIHNldCB2ZXJ0aWNhbCBkaW1lbnNp
b25zIHRvIDAuCi0gICAgaWYgKG1faGVpZ2h0ICsgbV9kZXB0aCA8IDApIHsKLSAgICAgICAgbV9o
ZWlnaHQgPSAwOwotICAgICAgICBtX2RlcHRoID0gMDsKKyAgICBpZiAoaGVpZ2h0ICsgZGVwdGgg
PCAwKSB7CisgICAgICAgIGhlaWdodCA9IDA7CisgICAgICAgIGRlcHRoID0gMDsKICAgICB9Ci0K
LSAgICBzZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKIH0KIAogdm9pZCBSZW5k
ZXJNYXRoTUxTcGFjZTo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRV
bml0KQpAQCAtODUsMjEgKzc3LDE5IEBAIHZvaWQgUmVuZGVyTWF0aE1MU3BhY2U6OmxheW91dEJs
b2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCkKICAgICBpZiAoIXJlbGF5b3V0
Q2hpbGRyZW4gJiYgc2ltcGxpZmllZExheW91dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBz
ZXRMb2dpY2FsV2lkdGgobV93aWR0aCk7Ci0gICAgc2V0TG9naWNhbEhlaWdodChtX2hlaWdodCAr
IG1fZGVwdGgpOworICAgIHNldExvZ2ljYWxXaWR0aChzcGFjZVdpZHRoKCkpOworICAgIExheW91
dFVuaXQgaGVpZ2h0LCBkZXB0aDsKKyAgICBnZXRTcGFjZUhlaWdodEFuZERlcHRoKGhlaWdodCwg
ZGVwdGgpOworICAgIHNldExvZ2ljYWxIZWlnaHQoaGVpZ2h0ICsgZGVwdGgpOwogCiAgICAgY2xl
YXJOZWVkc0xheW91dCgpOwogfQogCi12b2lkIFJlbmRlck1hdGhNTFNwYWNlOjpzdHlsZURpZENo
YW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQot
ewotICAgIFJlbmRlck1hdGhNTEJsb2NrOjpzdHlsZURpZENoYW5nZShkaWZmLCBvbGRTdHlsZSk7
Ci0gICAgdXBkYXRlRnJvbUVsZW1lbnQoKTsKLX0KLQogT3B0aW9uYWw8aW50PiBSZW5kZXJNYXRo
TUxTcGFjZTo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewotICAgIHJldHVybiBPcHRpb25h
bDxpbnQ+KG1faGVpZ2h0KTsKKyAgICBMYXlvdXRVbml0IGhlaWdodCwgZGVwdGg7CisgICAgZ2V0
U3BhY2VIZWlnaHRBbmREZXB0aChoZWlnaHQsIGRlcHRoKTsKKyAgICByZXR1cm4gT3B0aW9uYWw8
aW50PihoZWlnaHQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmgKaW5kZXggYWRiZTk4My4uZmZkNDk3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2Uu
aApAQCAtMjgsMjkgKzI4LDI2IEBACiAKICNpZiBFTkFCTEUoTUFUSE1MKQogCi0jaW5jbHVkZSAi
TWF0aE1MVGV4dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJNYXRoTUxTcGFjZUVsZW1lbnQuaCIKICNp
bmNsdWRlICJSZW5kZXJNYXRoTUxCbG9jay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFJlbmRlck1hdGhNTFNwYWNlIGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsK
IHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxTcGFjZShNYXRoTUxUZXh0RWxlbWVudCYsIFJlbmRl
clN0eWxlJiYpOwotICAgIE1hdGhNTFRleHRFbGVtZW50JiBlbGVtZW50KCkgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8TWF0aE1MVGV4dEVsZW1lbnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9Cisg
ICAgUmVuZGVyTWF0aE1MU3BhY2UoTWF0aE1MU3BhY2VFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7
CisgICAgTWF0aE1MU3BhY2VFbGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8TWF0aE1MU3BhY2VFbGVtZW50Jj4obm9kZUZvck5vbkFub255bW91cygpKTsgfQogCiBw
cml2YXRlOgogICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biAiUmVuZGVyTWF0aE1MU3BhY2UiOyB9CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTFNwYWNlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5
bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIGZpbmFsOwogICAgIGJv
b2wgaXNDaGlsZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUm
KSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZvaWQgdXBkYXRlRnJvbUVsZW1l
bnQoKSBmaW5hbDsKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgZmlu
YWw7CiAgICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVu
aXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwKSBmaW5hbDsKICAgICBPcHRpb25hbDxpbnQ+IGZpcnN0
TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CiAKLSAgICBMYXlvdXRVbml0IG1fd2lkdGg7Ci0g
ICAgTGF5b3V0VW5pdCBtX2hlaWdodDsKLSAgICBMYXlvdXRVbml0IG1fZGVwdGg7CisgICAgTGF5
b3V0VW5pdCBzcGFjZVdpZHRoKCkgY29uc3Q7CisgICAgdm9pZCBnZXRTcGFjZUhlaWdodEFuZERl
cHRoKExheW91dFVuaXQmIGhlaWdodCwgTGF5b3V0VW5pdCYgZGVwdGgpIGNvbnN0OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotLSAKMi44LjEKCg==
</data>
<flag name="review"
          id="306867"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283308</attachid>
            <date>2016-07-11 02:25:23 -0700</date>
            <delta_ts>2016-07-11 23:03:10 -0700</delta_ts>
            <desc>Patch bug 156792 + 156795 (for EWS testing)</desc>
            <filename>156792+156795.patch</filename>
            <type>text/plain</type>
            <size>36582</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZTc4YjA0Mi4uYWU2ZmM1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE5ODcsNiArMTk4Nyw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBtYXRo
bWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCiAgICAgbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVu
dC5jcHAKICAgICBtYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAKKyAgICBtYXRobWwvTWF0
aE1MU3BhY2VFbGVtZW50LmNwcAogICAgIG1hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAKIAog
ICAgIHBhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmU3YTY3ZS4u
MzA1MDMzMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBAQAorMjAxNi0wNS0xOCAgRnJlZGVy
aWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5vcmc+CisKKyAgICAgICAgTW92ZSBwYXJzaW5nIG9mIG1z
cGFjZSBhdHRyaWJ1dGVzIHRvIGEgTWF0aE1MU3BhY2VFbGVtZW50IGNsYXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY3OTUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGFscmVh
ZHkgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OiBBZGQgTWF0aE1MU3BhY2VFbGVtZW50IHRvIHRoZSBidWlsZCBzeXN0ZW0uCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBtYXRo
bWwvTWF0aE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxFbGVtZW50Ojpj
YWNoZWRNYXRoTUxMZW5ndGgpOiBIZWxwZXIgZnVuY3Rpb24gdG8gcmV0dXJuZWQgdGhlIGNhY2hl
ZCBwYXJzZWQKKyAgICAgICAgdmFsdWUgb2YgYSBNYXRoTUwgbGVuZ3RoIGFuZCBwYXJzaW5nIHRo
ZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSB2YWx1ZSBpZiB0aGUgY2FjaGUgaXMgZGlydHkuCisg
ICAgICAgICogbWF0aG1sL01hdGhNTEVsZW1lbnQuaDogQWRkIGEgZGlydHkgYm9vbGVhbiB0byBN
YXRoTUwgTGVuZ3RoIHN0cnVjdHVyZS4gRGVjbGFyZSBjYWNoZWRNYXRoTUxMZW5ndGguCisgICAg
ICAgICogbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5jcHA6IE5ldyBjbGFzcyBmb3IgdGhlIDxt
c3BhY2U+IGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxTcGFjZUVsZW1lbnQ6Ok1h
dGhNTFNwYWNlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxTcGFjZUVsZW1lbnQ6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxTcGFjZUVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKTogTWFrZSB3aWR0aCwgaGVpZ2h0LCBkZXB0aCBhdHRyaWJ1dGVzIGRpcnR5LgorICAg
ICAgICAoV2ViQ29yZTo6TWF0aE1MU3BhY2VFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIp
OgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuaDogTmV3IGNsYXNzIGZvciB0
aGUgPG1zcGFjZT4gZWxlbWVudC4KKyAgICAgICAgV2UgZGVmaW5lIE1hdGhNTCBsZW5ndGhzIGZv
ciB3aWR0aCwgaGVpZ2h0IGFuZCBkZXB0aCBhdHRyaWJ1dGVzIGFyZSBvbiB0aGUgY2xhc3MgYW5k
IGV4cG9zZQorICAgICAgICB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGhlbHBlciBmdW5jdGlvbnMg
dmlhIG1lbW9pemF0aW9uLgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHA6
IFJlbW92ZSBoYW5kbGluZyBvZiBtc3BhY2UgZnJvbSB0aGlzIGNsYXNzLgorICAgICAgICAoV2Vi
Q29yZTo6TWF0aE1MVGV4dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAg
ICogbWF0aG1sL21hdGh0YWdzLmluOiBDaGFuZ2UgdGhlIGludGVyZmFjZSBmb3IgbXNwYWNlIHRv
IHVzZSB0aGUgbmV3IGNsYXNzLgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MU3BhY2UuY3BwOiBEbyBub3Qgc3RvcmUgd2lkdGgvaGVpZ2h0L2RlcHRoIHZhbHVlcyBvbiB0
aGUKKyAgICAgICAgcmVuZGVyZXIgYW5kIGluc3RlYWQganVzdCB1c2UgdGhlIGNvcnJlc3BvbmRp
bmcgTWF0aE1MIGxlbmd0aHMgb24gdGhlIGVsZW1lbnQgY2xhc3MuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJNYXRoTUxTcGFjZTo6UmVuZGVyTWF0aE1MU3BhY2UpOiBVc2UgTWF0aE1MU3BhY2VF
bGVtZW50IGFuZCByZW1vdmUgbWVtYmVyCisgICAgICAgIGluaXRpYWxpemF0aW9uLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU3BhY2U6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKTogVXNlIHNwYWNlV2lkdGgoKS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFNw
YWNlOjpzcGFjZVdpZHRoKTogSGVscGVyIGZ1bmN0aW9uIHRvIHJlc29sdmUgdGhlIHdpZHRoIGF0
dHJpYnV0ZSB2YWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFNwYWNlOjpnZXRT
cGFjZUhlaWdodEFuZERlcHRoKTogRGl0dG8gZm9yIGhlaWdodCBhbmQgZGVwdGguCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTcGFjZTo6bGF5b3V0QmxvY2spOiBVc2UgdGhlIGhlbHBl
ciBmdW5jdGlvbnMgdG8gZ2V0IHRoZSBtc3BhY2UgbWV0cmljcy4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTFNwYWNlOjpmaXJzdExpbmVCYXNlbGluZSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTWF0aE1MU3BhY2U6OnVwZGF0ZUZyb21FbGVtZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFNwYWNlOjpzdHlsZURpZENoYW5nZSk6IERl
bGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oOiBV
c2UgTWF0aE1MU3BhY2VFbGVtZW50LCByZXBsYWNlIG1lbWJlcnMgd2l0aCBoZWxwZXIKKyAgICAg
ICAgZnVuY3Rpb25zIGFuZCBhbmQgbWFrZSBlbGVtZW50KCkgdXNhYmxlIGZyb20gYSBjb25zdCBp
bnN0YW5jZS4KKworMjAxNi0wNy0wOCAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5vcmc+
CisKKyAgICAgICAgQ3JlYXRlIGEgTWF0aE1MTGVuZ3RoIHN0cnVjdCB0byBoYW5kbGUgdGhlIHBh
cnNpbmcgb2YgTWF0aE1MIGxlbmd0aC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1Njc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdlIGludHJvZHVjZSBhIHN0cnVjdHVyZSBmb3IgTWF0aE1MIGxlbmd0
aHMgdGhhdCB3aWxsIGJlIHVzZWQgaW4gdGhlIGZ1dHVyZSB0byBzdG9yZSB0aGUKKyAgICAgICAg
cGFyc2VkIHZhbHVlcyBpbiB0aGUgTWF0aEVsZW1lbnQgY2xhc3MuIFdlIGFsc28gcmV3cml0ZSB0
aGUgcGFyc2luZyBmdW5jdGlvbiBmb3IgTWF0aE1MCisgICAgICAgIGxlbmd0aHMgaW4gb3JkZXIg
dG8gaW1wcm92ZSBlZmZpY2llbmN5IGFuZCBjb2RlIHJldXNlLiBUaGlzIGZ1bmN0aW9uIGlzIG1v
dmVkIGludG8gdGhlCisgICAgICAgIE1hdGhFbGVtZW50IGNsYXNzIGFuZCBvbmx5IHRoZSBjb252
ZXJzaW9uIHRvIExheW91dFVuaXQgcmVtYWlucyBpbiB0aGUgcmVuZGVyZXIgY2xhc3Nlcy4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMsIGFscmVhZHkgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4K
KworICAgICAgICAqIG1hdGhtbC9NYXRoTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnBhcnNlTmFtZWRTcGFjZSk6IEhlbHBlciBmdW5jdGlvbiB0byBwYXJzZSBhIG5hbWVkIHNwYWNl
LgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRWxlbWVudDo6cGFyc2VNYXRoTUxMZW5ndGgpOiBQ
YXJzaW5nIGZ1bmN0aW9uIGZvciBNYXRoTUwgbGVuZ3Rocy4KKyAgICAgICAgKiBtYXRobWwvTWF0
aE1MRWxlbWVudC5oOiBEZWNsYXJlIG5ldyBmdW5jdGlvbiBhbmQgc3RydWN0dXJlIHRvIGhhbmRs
ZSBNYXRoTUwgbGVuZ3Rocy4KKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVXNlclVuaXRzKTogSGVscGVyIGZ1bmN0
aW9uIHRvIHJlc29sdmUgYSBNYXRoTUwgbGVuZ3RoLgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VN
YXRoTUxMZW5ndGgpOiBSZW1vdmUgdGhlIG9sZCBwYXJzaW5nIGNvZGUgYW5kIGp1c3QgdXNlIE1h
dGhNTEVsZW1lbnQ6OnBhcnNlTWF0aE1MTGVuZ3RoIGFuZCB0b1VzZXJVbml0cyBpbnN0ZWFkLgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VNYXRoTUxOYW1lZFNwYWNlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmg6IFJlbW92ZSB1bnVzZWQg
ZnVuY3Rpb24uCisKIDIwMTYtMDctMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBTZXR0aW5nIGRvY3VtZW50LnRpdGxlIHJldXNlcyA8dGl0bGU+J3MgdGV4dG5v
ZGUgY2hpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBjMTFiYzQ3Li4wNTI3ZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02ODkzLDYgKzY4OTMsOCBAQAog
CQlGOThGRkY0NDExQTI2NzYyMDBGNTQ4RTggLyogQ1NTT01VdGlscy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOThGRkY0MjExQTI2NzYyMDBGNTQ4
RTggLyogQ1NTT01VdGlscy5jcHAgKi87IH07CiAJCUY5OEZGRjQ1MTFBMjY3NjIwMEY1NDhFOCAv
KiBDU1NPTVV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGOThGRkY0MzExQTI2NzYyMDBGNTQ4RTggLyogQ1NTT01VdGlscy5oICovOyB9OwogCQlG
OUYwRUQ3QTBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOUYwRUQ3NzBE
QjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi87IH07CisJ
CTRGQTY1QTZCMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxTcGFjZUVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEZBNjVBNjkxMTA4QUJF
RDAwMjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxlbWVudC5jcHAgKi87IH07CisJCTRGQTY1QTZDMTEw
OEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxTcGFjZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGQTY1QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBN
YXRoTUxTcGFjZUVsZW1lbnQuaCAqLzsgfTsKIAkJRkE2NTRBNkIxMTA4QUJFRDAwMjYxNUUwIC8q
IE1hdGhNTFRleHRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZBNjU0QTY5MTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVu
dC5jcHAgKi87IH07CiAJCUZBNjU0QTZDMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE2
NTRBNkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmggKi87IH07CiAJCUZB
QkU3MkY0MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBQkU3MkVEMTA1OUMxRUIwMEQ5OTlE
RCAvKiBNYXRoTUxFbGVtZW50LmNwcCAqLzsgfTsKQEAgLTE1MDU1LDYgKzE1MDU3LDggQEAKIAkJ
RjlGMEVENzgwREI1MENBMjAwRDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBNjU0QTYzMTEwOEFCQjcwMDI2MTVF
MCAvKiBtYXRobWwuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBtYXRobWwuY3NzOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQTY1NEE2NzExMDhBQkUyMDAyNjE1RTAgLyog
bWF0aGF0dHJzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IG1hdGhhdHRycy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEZBNjVBNjkxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhN
TFNwYWNlRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
YXRoTUxTcGFjZUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0RkE2
NUE2QTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MU3BhY2VFbGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTFNwYWNlRWxlbWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGQTY1NEE2OTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MVGV4
dEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQTY1NEE2QTExMDhB
QkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWF0aE1MVGV4dEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkE2RTQ2NkZDRDA0MThBOTk2NkE1QjYwIC8qIEROU1Jlc29sdmVRdWV1ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBETlNSZXNvbHZlUXVldWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0ODYyLDYgKzI0ODY2LDggQEAKIAkJCQlDRTZEODkyOTRD
N0FBQ0UwQUQ4OUIzREQgLyogTWF0aE1MTWVuY2xvc2VFbGVtZW50LmggKi8sCiAJCQkJRjc1QTA1
OUFGMTcwRDhGQUE1QjhDQUJFIC8qIE1hdGhNTFNlbGVjdEVsZW1lbnQuY3BwICovLAogCQkJCTU5
NzgwODQ5RDQxRTZGNjVEODExOThCQyAvKiBNYXRoTUxTZWxlY3RFbGVtZW50LmggKi8sCisJCQkJ
NEZBNjVBNjkxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxlbWVudC5jcHAgKi8sCisJ
CQkJNEZBNjVBNkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxlbWVudC5oICovLAog
CQkJCUZBNjU0QTY5MTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5jcHAgKi8s
CiAJCQkJRkE2NTRBNkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmggKi8s
CiAJCQkJRkFCRTcyRjMxMDU5QzFFQjAwRDk5OUREIC8qIG1hdGh0YWdzLmluICovLApAQCAtMjcz
OTgsNiArMjc0MDQsNyBAQAogCQkJCTQ0QTI4QUFGMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxO
YW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5MDQ2RTAxMkRBMjVFMTdCQUY4MEEyIC8qIE1h
dGhNTE9wZXJhdG9yRGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5MTc2RTAxMkRB
MjVFMTdCQUY4MEEyIC8qIE1hdGhNTFN0eWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0RkE2NUE2
QzExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MU3BhY2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlGQTY1NEE2QzExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQzOTA0NkVBMTJEQTI1RTgxMkFGODBBQyAvKiBNYXRoT3BlcmF0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RDVEQzJDMEY0MjNBNzMwMDhGMjBGRCAvKiBNYXRyaXgz
RFRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTIyMSw2ICszMTIyOCw3
IEBACiAJCQkJNDM5MDQ2REYxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTE9wZXJhdG9yRGljdGlv
bmFyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzkxNzZERjEyREEyNUUxN0JBRjgwQTIgLyog
TWF0aE1MU3R5bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVENDgzOTBDRUQ2NkMzMjU1Rjcy
QzU5IC8qIE1hdGhNTFNlbGVjdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNEZBNjVB
NkIxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlGQTY1NEE2QjExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDM5MDQ2RTkxMkRBMjVFODEyQUY4MEFDIC8qIE1hdGhPcGVy
YXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUQ1REMyQjBGNDIzQTczMDA4RjIwRkQgLyog
TWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKaW5kZXggY2Y1MWQ0ZC4uNmJlYzJjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcApAQCAtMzA1LDYgKzMwNSwxMzQgQEAg
dm9pZCBNYXRoTUxFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21pY1N0cmkKICAgICBTdHlsZWRFbGVtZW50OjphdHRyaWJ1dGVDaGFu
Z2VkKG5hbWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSwgcmVhc29uKTsKIH0KIAorc3RhdGljIGlubGlu
ZSBTdHJpbmdWaWV3IHNraXBMZWFkaW5nQW5kVHJhaWxpbmdXaGl0ZXNwYWNlKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQoreworICAgIHVuc2lnbmVkIHN0YXJ0ID0gMCwgc3RyaW5nTGVuZ3RoID0gc3Ry
aW5nLmxlbmd0aCgpOworICAgIHdoaWxlIChzdHJpbmdMZW5ndGggPiAwICYmIGlzSFRNTFNwYWNl
KHN0cmluZ1tzdGFydF0pKSB7CisgICAgICAgIHN0YXJ0Kys7CisgICAgICAgIHN0cmluZ0xlbmd0
aC0tOworICAgIH0KKyAgICB3aGlsZSAoc3RyaW5nTGVuZ3RoID4gMCAmJiBpc0hUTUxTcGFjZShz
dHJpbmdbc3RhcnQgKyBzdHJpbmdMZW5ndGggLSAxXSkpCisgICAgICAgIHN0cmluZ0xlbmd0aC0t
OworICAgIHJldHVybiBzdHJpbmcuc3Vic3RyaW5nKHN0YXJ0LCBzdHJpbmdMZW5ndGgpOworfQor
CitNYXRoTUxFbGVtZW50OjpMZW5ndGggTWF0aE1MRWxlbWVudDo6cGFyc2VOdW1iZXJBbmRVbml0
KGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZykKK3sKKyAgICBMZW5ndGhUeXBlIGxlbmd0aFR5cGUg
PSBMZW5ndGhUeXBlOjpVbml0TGVzczsKKyAgICB1bnNpZ25lZCBzdHJpbmdMZW5ndGggPSBzdHJp
bmcubGVuZ3RoKCk7CisgICAgVUNoYXIgbGFzdENoYXIgPSBzdHJpbmdbc3RyaW5nTGVuZ3RoIC0g
MV07CisgICAgaWYgKGxhc3RDaGFyID09ICclJykgeworICAgICAgICBsZW5ndGhUeXBlID0gTGVu
Z3RoVHlwZTo6UGVyY2VudGFnZTsKKyAgICAgICAgc3RyaW5nTGVuZ3RoLS07CisgICAgfSBlbHNl
IGlmIChzdHJpbmdMZW5ndGggPj0gMikgeworICAgICAgICBVQ2hhciBwZW51bHRpbWF0ZUNoYXIg
PSBzdHJpbmdbc3RyaW5nTGVuZ3RoIC0gMl07CisgICAgICAgIGlmIChwZW51bHRpbWF0ZUNoYXIg
PT0gJ2MnICYmIGxhc3RDaGFyID09ICdtJykKKyAgICAgICAgICAgIGxlbmd0aFR5cGUgPSBMZW5n
dGhUeXBlOjpDbTsKKyAgICAgICAgaWYgKHBlbnVsdGltYXRlQ2hhciA9PSAnZScgJiYgbGFzdENo
YXIgPT0gJ20nKQorICAgICAgICAgICAgbGVuZ3RoVHlwZSA9IExlbmd0aFR5cGU6OkVtOworICAg
ICAgICBlbHNlIGlmIChwZW51bHRpbWF0ZUNoYXIgPT0gJ2UnICYmIGxhc3RDaGFyID09ICd4JykK
KyAgICAgICAgICAgIGxlbmd0aFR5cGUgPSBMZW5ndGhUeXBlOjpFeDsKKyAgICAgICAgZWxzZSBp
ZiAocGVudWx0aW1hdGVDaGFyID09ICdpJyAmJiBsYXN0Q2hhciA9PSAnbicpCisgICAgICAgICAg
ICBsZW5ndGhUeXBlID0gTGVuZ3RoVHlwZTo6SW47CisgICAgICAgIGVsc2UgaWYgKHBlbnVsdGlt
YXRlQ2hhciA9PSAnbScgJiYgbGFzdENoYXIgPT0gJ20nKQorICAgICAgICAgICAgbGVuZ3RoVHlw
ZSA9IExlbmd0aFR5cGU6Ok1tOworICAgICAgICBlbHNlIGlmIChwZW51bHRpbWF0ZUNoYXIgPT0g
J3AnICYmIGxhc3RDaGFyID09ICdjJykKKyAgICAgICAgICAgIGxlbmd0aFR5cGUgPSBMZW5ndGhU
eXBlOjpQYzsKKyAgICAgICAgZWxzZSBpZiAocGVudWx0aW1hdGVDaGFyID09ICdwJyAmJiBsYXN0
Q2hhciA9PSAndCcpCisgICAgICAgICAgICBsZW5ndGhUeXBlID0gTGVuZ3RoVHlwZTo6UHQ7Cisg
ICAgICAgIGVsc2UgaWYgKHBlbnVsdGltYXRlQ2hhciA9PSAncCcgJiYgbGFzdENoYXIgPT0gJ3gn
KQorICAgICAgICAgICAgbGVuZ3RoVHlwZSA9IExlbmd0aFR5cGU6OlB4OworCisgICAgICAgIGlm
IChsZW5ndGhUeXBlICE9IExlbmd0aFR5cGU6OlVuaXRMZXNzKQorICAgICAgICAgICAgc3RyaW5n
TGVuZ3RoIC09IDI7CisgICAgfQorCisgICAgYm9vbCBvazsKKyAgICBmbG9hdCBsZW5ndGhWYWx1
ZSA9IHN0cmluZy5zdWJzdHJpbmcoMCwgc3RyaW5nTGVuZ3RoKS50b0Zsb2F0KG9rKTsKKyAgICBp
ZiAoIW9rKQorICAgICAgICByZXR1cm4gTGVuZ3RoKCk7CisKKyAgICBMZW5ndGggbGVuZ3RoOwor
ICAgIGxlbmd0aC50eXBlID0gbGVuZ3RoVHlwZTsKKyAgICBsZW5ndGgudmFsdWUgPSBsZW5ndGhW
YWx1ZTsKKyAgICByZXR1cm4gbGVuZ3RoOworfQorCitNYXRoTUxFbGVtZW50OjpMZW5ndGggTWF0
aE1MRWxlbWVudDo6cGFyc2VOYW1lZFNwYWNlKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZykKK3sK
KyAgICAvLyBOYW1lZCBzcGFjZSB2YWx1ZXMgYXJlIGNhc2Utc2Vuc2l0aXZlLgorICAgIGludCBu
YW1lZFNwYWNlVmFsdWU7CisgICAgaWYgKHN0cmluZyA9PSAidmVyeXZlcnl0aGlubWF0aHNwYWNl
IikKKyAgICAgICAgbmFtZWRTcGFjZVZhbHVlID0gMTsKKyAgICBlbHNlIGlmIChzdHJpbmcgPT0g
InZlcnl0aGlubWF0aHNwYWNlIikKKyAgICAgICAgbmFtZWRTcGFjZVZhbHVlID0gMjsKKyAgICBl
bHNlIGlmIChzdHJpbmcgPT0gInRoaW5tYXRoc3BhY2UiKQorICAgICAgICBuYW1lZFNwYWNlVmFs
dWUgPSAzOworICAgIGVsc2UgaWYgKHN0cmluZyA9PSAibWVkaXVtbWF0aHNwYWNlIikKKyAgICAg
ICAgbmFtZWRTcGFjZVZhbHVlID0gNDsKKyAgICBlbHNlIGlmIChzdHJpbmcgPT0gInRoaWNrbWF0
aHNwYWNlIikKKyAgICAgICAgbmFtZWRTcGFjZVZhbHVlID0gNTsKKyAgICBlbHNlIGlmIChzdHJp
bmcgPT0gInZlcnl0aGlja21hdGhzcGFjZSIpCisgICAgICAgIG5hbWVkU3BhY2VWYWx1ZSA9IDY7
CisgICAgZWxzZSBpZiAoc3RyaW5nID09ICJ2ZXJ5dmVyeXRoaWNrbWF0aHNwYWNlIikKKyAgICAg
ICAgbmFtZWRTcGFjZVZhbHVlID0gNzsKKyAgICBlbHNlIGlmIChzdHJpbmcgPT0gIm5lZ2F0aXZl
dmVyeXZlcnl0aGlubWF0aHNwYWNlIikKKyAgICAgICAgbmFtZWRTcGFjZVZhbHVlID0gLTE7Cisg
ICAgZWxzZSBpZiAoc3RyaW5nID09ICJuZWdhdGl2ZXZlcnl0aGlubWF0aHNwYWNlIikKKyAgICAg
ICAgbmFtZWRTcGFjZVZhbHVlID0gLTI7CisgICAgZWxzZSBpZiAoc3RyaW5nID09ICJuZWdhdGl2
ZXRoaW5tYXRoc3BhY2UiKQorICAgICAgICBuYW1lZFNwYWNlVmFsdWUgPSAtMzsKKyAgICBlbHNl
IGlmIChzdHJpbmcgPT0gIm5lZ2F0aXZlbWVkaXVtbWF0aHNwYWNlIikKKyAgICAgICAgbmFtZWRT
cGFjZVZhbHVlID0gLTQ7CisgICAgZWxzZSBpZiAoc3RyaW5nID09ICJuZWdhdGl2ZXRoaWNrbWF0
aHNwYWNlIikKKyAgICAgICAgbmFtZWRTcGFjZVZhbHVlID0gLTU7CisgICAgZWxzZSBpZiAoc3Ry
aW5nID09ICJuZWdhdGl2ZXZlcnl0aGlja21hdGhzcGFjZSIpCisgICAgICAgIG5hbWVkU3BhY2VW
YWx1ZSA9IC02OworICAgIGVsc2UgaWYgKHN0cmluZyA9PSAibmVnYXRpdmV2ZXJ5dmVyeXRoaWNr
bWF0aHNwYWNlIikKKyAgICAgICAgbmFtZWRTcGFjZVZhbHVlID0gLTc7CisgICAgZWxzZQorICAg
ICAgICByZXR1cm4gTGVuZ3RoKCk7CisKKyAgICBMZW5ndGggbGVuZ3RoOworICAgIGxlbmd0aC50
eXBlID0gTGVuZ3RoVHlwZTo6TWF0aFVuaXQ7CisgICAgbGVuZ3RoLnZhbHVlID0gbmFtZWRTcGFj
ZVZhbHVlOworICAgIHJldHVybiBsZW5ndGg7Cit9CisKK01hdGhNTEVsZW1lbnQ6Okxlbmd0aCBN
YXRoTUxFbGVtZW50OjpwYXJzZU1hdGhNTExlbmd0aChjb25zdCBTdHJpbmcmIHN0cmluZykKK3sK
KyAgICAvLyBUaGUgcmVndWxhciBleHByZXNzaW9uIGZyb20gdGhlIE1hdGhNTCBSZWxheCBORyBz
Y2hlbWEgaXMgYXMgZm9sbG93czoKKyAgICAvLworICAgIC8vICAgcGF0dGVybiA9ICdccyooKC0/
WzAtOV0qKFswLTldXC4/fFwuWzAtOV0pWzAtOV0qKGVbbXhdfGlufGNtfG1tfHBbeHRjXXwlKT8p
fChuZWdhdGl2ZSk/KCh2ZXJ5KXswLDJ9dGhpKG58Y2spfG1lZGl1bSltYXRoc3BhY2UpXHMqJwor
ICAgIC8vCisgICAgLy8gV2UgZG8gbm90IHBlcmZvcm0gYSBzdHJpY3QgdmVyaWZpY2F0aW9uIG9m
IHRoZSBzeW50YXggb2Ygd2hpdGVzcGFjZXMgYW5kIG51bWJlci4KKyAgICAvLyBJbnN0ZWFkLCB3
ZSBqdXN0IHVzZSBpc0hUTUxTcGFjZSBhbmQgdG9GbG9hdCB0byBwYXJzZSB0aGVzZSBwYXJ0cy4K
KworICAgIC8vIFdlIGZpcnN0IHNraXAgd2hpdGVzcGFjZSBmcm9tIGJvdGggZW5kcyBvZiB0aGUg
c3RyaW5nLgorICAgIFN0cmluZ1ZpZXcgc3RyaW5nVmlldyA9IHNraXBMZWFkaW5nQW5kVHJhaWxp
bmdXaGl0ZXNwYWNlKHN0cmluZyk7CisKKyAgICBpZiAoc3RyaW5nVmlldy5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBMZW5ndGgoKTsKKworICAgIC8vIFdlIGNvbnNpZGVyIHRoZSBtb3N0IHR5
cGljYWwgY2FzZTogYSBudW1iZXIgZm9sbG93ZWQgYnkgYW4gb3B0aW9uYWwgdW5pdC4KKyAgICBV
Q2hhciBmaXJzdENoYXIgPSBzdHJpbmdWaWV3WzBdOworICAgIGlmIChpc0FTQ0lJRGlnaXQoZmly
c3RDaGFyKSB8fCBmaXJzdENoYXIgPT0gJy0nIHx8IGZpcnN0Q2hhciA9PSAnLicpCisgICAgICAg
IHJldHVybiBwYXJzZU51bWJlckFuZFVuaXQoc3RyaW5nVmlldyk7CisKKyAgICAvLyBPdGhlcndp
c2UsIHdlIHRyeSBhbmQgcGFyc2UgYSBuYW1lZCBzcGFjZS4KKyAgICByZXR1cm4gcGFyc2VOYW1l
ZFNwYWNlKHN0cmluZ1ZpZXcpOworfQorCitjb25zdCBNYXRoTUxFbGVtZW50OjpMZW5ndGgmIE1h
dGhNTEVsZW1lbnQ6OmNhY2hlZE1hdGhNTExlbmd0aChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBMZW5ndGgmIGxlbmd0aCkKK3sKKyAgICBpZiAobGVuZ3RoLmRpcnR5KSB7CisgICAgICAgIGxl
bmd0aCA9IHBhcnNlTWF0aE1MTGVuZ3RoKGZhc3RHZXRBdHRyaWJ1dGUobmFtZSkpOworICAgICAg
ICBsZW5ndGguZGlydHkgPSBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIGxlbmd0aDsKK30KKwog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKE1BVEhNTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxl
bWVudC5oCmluZGV4IDJhNWIzZWUuLjliMDJiMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TEVsZW1lbnQuaApAQCAtNTYsNiArNTYsMTcgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNUYWdO
YW1lKGNvbnN0IE1hdGhNTFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIGhhc0xv
Y2FsTmFtZShuYW1lLmxvY2FsTmFtZSgpKTsgfQogCisgICAgLy8gTWF0aE1MIGxlbmd0aHMgKGh0
dHBzOi8vd3d3LnczLm9yZy9UUi9NYXRoTUwzL2NoYXB0ZXIyLmh0bWwjZnVuZC51bml0cykKKyAg
ICAvLyBUZVgncyBNYXRoIFVuaXQgaXMgdXNlZCBpbnRlcm5hbGx5IGZvciBuYW1lZCBzcGFjZXMg
KDEgbXUgPSAxLzE4IGVtKS4KKyAgICAvLyBVbml0bGVzcyB2YWx1ZXMgYXJlIGludGVwcmV0ZWQg
YXMgYSBtdWx0aXBsZSBvZiBhIHJlZmVyZW5jZSB2YWx1ZS4KKyAgICBlbnVtIGNsYXNzIExlbmd0
aFR5cGUgeyBDbSwgRW0sIEV4LCBJbiwgTWF0aFVuaXQsIE1tLCBQYXJzaW5nRmFpbGVkLCBQYywg
UGVyY2VudGFnZSwgUHQsIFB4LCBVbml0TGVzcyB9OworICAgIHN0cnVjdCBMZW5ndGggeworICAg
ICAgICBMZW5ndGhUeXBlIHR5cGUgeyBMZW5ndGhUeXBlOjpQYXJzaW5nRmFpbGVkIH07CisgICAg
ICAgIGZsb2F0IHZhbHVlIHsgMCB9OworICAgICAgICBib29sIGRpcnR5IHsgdHJ1ZSB9OworICAg
IH07CisgICAgc3RhdGljIExlbmd0aCBwYXJzZU1hdGhNTExlbmd0aChjb25zdCBTdHJpbmcmKTsK
KwogcHJvdGVjdGVkOgogICAgIE1hdGhNTEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQmKTsKIApAQCAtNjksOCArODAsMTIgQEAgcHJvdGVjdGVkOgogICAgIGJv
b2wgaXNQaHJhc2luZ0NvbnRlbnQoY29uc3QgTm9kZSYpIGNvbnN0OwogICAgIGJvb2wgaXNGbG93
Q29udGVudChjb25zdCBOb2RlJikgY29uc3Q7CiAKKyAgICBjb25zdCBMZW5ndGgmIGNhY2hlZE1h
dGhNTExlbmd0aChjb25zdCBRdWFsaWZpZWROYW1lJiwgTGVuZ3RoJik7CisKIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNlbGVjdGVkQ2hpbGQoKSB7IH0KKyAgICBzdGF0aWMgTGVu
Z3RoIHBhcnNlTnVtYmVyQW5kVW5pdChjb25zdCBTdHJpbmdWaWV3Jik7CisgICAgc3RhdGljIExl
bmd0aCBwYXJzZU5hbWVkU3BhY2UoY29uc3QgU3RyaW5nVmlldyYpOwogfTsKIAogaW5saW5lIGJv
b2wgTm9kZTo6aGFzVGFnTmFtZShjb25zdCBNYXRoTUxRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OGMxZTc3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5jcHAKQEAgLTAsMCArMSw4
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShNQVRITUwpCisjaW5jbHVkZSAiTWF0aE1MU3BhY2VFbGVtZW50LmgiCisKKyNp
bmNsdWRlICJSZW5kZXJNYXRoTUxTcGFjZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Vz
aW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKKworaW5saW5lIE1hdGhNTFNwYWNlRWxlbWVudDo6
TWF0aE1MU3BhY2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
JiBkb2N1bWVudCkKKyAgICA6IE1hdGhNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCit7Cit9
CisKK1JlZjxNYXRoTUxTcGFjZUVsZW1lbnQ+IE1hdGhNTFNwYWNlRWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBNYXRoTUxTcGFjZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
KTsKK30KKworY29uc3QgTWF0aE1MRWxlbWVudDo6TGVuZ3RoJiBNYXRoTUxTcGFjZUVsZW1lbnQ6
OndpZHRoKCkKK3sKKyAgICByZXR1cm4gY2FjaGVkTWF0aE1MTGVuZ3RoKE1hdGhNTE5hbWVzOjp3
aWR0aEF0dHIsIG1fd2lkdGgpOworfQorCitjb25zdCBNYXRoTUxFbGVtZW50OjpMZW5ndGgmIE1h
dGhNTFNwYWNlRWxlbWVudDo6aGVpZ2h0KCkKK3sKKyAgICByZXR1cm4gY2FjaGVkTWF0aE1MTGVu
Z3RoKE1hdGhNTE5hbWVzOjpoZWlnaHRBdHRyLCBtX2hlaWdodCk7Cit9CisKK2NvbnN0IE1hdGhN
TEVsZW1lbnQ6Okxlbmd0aCYgTWF0aE1MU3BhY2VFbGVtZW50OjpkZXB0aCgpCit7CisgICAgcmV0
dXJuIGNhY2hlZE1hdGhNTExlbmd0aChNYXRoTUxOYW1lczo6ZGVwdGhBdHRyLCBtX2RlcHRoKTsK
K30KKwordm9pZCBNYXRoTUxTcGFjZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit7CisgICAgaWYgKG5h
bWUgPT0gd2lkdGhBdHRyKQorICAgICAgICBtX3dpZHRoLmRpcnR5ID0gdHJ1ZTsKKyAgICBlbHNl
IGlmIChuYW1lID09IGhlaWdodEF0dHIpCisgICAgICAgIG1faGVpZ2h0LmRpcnR5ID0gdHJ1ZTsK
KyAgICBlbHNlIGlmIChuYW1lID09IGRlcHRoQXR0cikKKyAgICAgICAgbV9kZXB0aC5kaXJ0eSA9
IHRydWU7CisKKyAgICBNYXRoTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7
Cit9CisKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxTcGFjZUVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKQoreworICAgIEFTU0VSVChoYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptc3BhY2VUYWcp
KTsKKyAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MU3BhY2U+KCp0aGlzLCBX
VEZNb3ZlKHN0eWxlKSk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNQVRITUwpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMGY4ZTE2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuaApAQCAtMCwwICsxLDU0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1hdGhNTFNwYWNlRWxlbWVudF9oCisjZGVmaW5lIE1h
dGhNTFNwYWNlRWxlbWVudF9oCisKKyNpZiBFTkFCTEUoTUFUSE1MKQorI2luY2x1ZGUgIk1hdGhN
TEVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNYXRoTUxTcGFjZUVs
ZW1lbnQgZmluYWwgOiBwdWJsaWMgTWF0aE1MRWxlbWVudCB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxNYXRoTUxTcGFjZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCYpOworICAgIGNvbnN0IExlbmd0aCYgd2lkdGgoKTsKKyAgICBjb25zdCBM
ZW5ndGgmIGhlaWdodCgpOworICAgIGNvbnN0IExlbmd0aCYgZGVwdGgoKTsKK3ByaXZhdGU6Cisg
ICAgTWF0aE1MU3BhY2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50Jik7CisgICAgYm9vbCBpc1ByZXNlbnRhdGlvbk1hdGhNTCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwor
ICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYpIGZpbmFsOworCisgICAgTGVuZ3RoIG1fd2lkdGg7CisgICAgTGVuZ3RoIG1faGVp
Z2h0OworICAgIExlbmd0aCBtX2RlcHRoOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1B
VEhNTCkKKyNlbmRpZiAvLyBNYXRoTUxTcGFjZUVsZW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAKaW5kZXggY2YzMDY3NS4uMmFkMjFlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwCkBAIC0zMiw3ICszMiw2
IEBACiAKICNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgogI2luY2x1ZGUgIlJlbmRlck1hdGhNTE9w
ZXJhdG9yLmgiCi0jaW5jbHVkZSAiUmVuZGVyTWF0aE1MU3BhY2UuaCIKICNpbmNsdWRlICJSZW5k
ZXJNYXRoTUxUb2tlbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03OSw4ICs3OCw2IEBA
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxUZXh0RWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYKIHsKICAgICBpZiAoaGFzVGFnTmFtZShNYXRoTUxOYW1l
czo6bW9UYWcpKQogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MT3Bl
cmF0b3I+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7Ci0gICAgaWYgKGhhc1RhZ05hbWUoTWF0aE1M
TmFtZXM6Om1zcGFjZVRhZykpCi0gICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJN
YXRoTUxTcGFjZT4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKICAgICBpZiAoaGFzVGFnTmFtZShN
YXRoTUxOYW1lczo6YW5ub3RhdGlvblRhZykpCiAgICAgICAgIHJldHVybiBNYXRoTUxFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoV1RGTW92ZShzdHlsZSksIGluc2VydGlvblBvc2l0aW9u
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL21hdGh0YWdzLmluIGIvU291
cmNlL1dlYkNvcmUvbWF0aG1sL21hdGh0YWdzLmluCmluZGV4IDNlNTMwNTYuLjQ0ZGM4MjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9tYXRodGFncy5pbgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvbWF0aHRhZ3MuaW4KQEAgLTI1LDcgKzI1LDcgQEAgbW4gaW50ZXJmYWNl
TmFtZT1NYXRoTUxUZXh0RWxlbWVudAogbW8gaW50ZXJmYWNlTmFtZT1NYXRoTUxUZXh0RWxlbWVu
dAogbXRleHQgaW50ZXJmYWNlTmFtZT1NYXRoTUxUZXh0RWxlbWVudAogbXMgaW50ZXJmYWNlTmFt
ZT1NYXRoTUxUZXh0RWxlbWVudAotbXNwYWNlIGludGVyZmFjZU5hbWU9TWF0aE1MVGV4dEVsZW1l
bnQKK21zcGFjZSBpbnRlcmZhY2VOYW1lPU1hdGhNTFNwYWNlRWxlbWVudAogbXN1YiBpbnRlcmZh
Y2VOYW1lPU1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQKIG1zdXAgaW50ZXJmYWNlTmFtZT1N
YXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50CiBtdGFibGUgaW50ZXJmYWNlTmFtZT1NYXRoTUxJ
bmxpbmVDb250YWluZXJFbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCmluZGV4IDdmMGMyZTAuLmIwMGM4NGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
QmxvY2suY3BwCkBAIC0zMCwxMSArMzAsMTIgQEAKIAogI2luY2x1ZGUgIlJlbmRlck1hdGhNTEJs
b2NrLmgiCiAKKyNpbmNsdWRlICJDU1NIZWxwZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKICNpbmNsdWRlICJMYXlvdXRSZXBhaW50ZXIuaCIKKyNpbmNsdWRlICJNYXRoTUxFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3Lmgi
Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYgRU5BQkxFKERFQlVH
X01BVEhfTEFZT1VUKQogI2luY2x1ZGUgIlBhaW50SW5mby5oIgpAQCAtMTM3LDE3NyArMTM4LDUy
IEBAIHZvaWQgUmVuZGVyTWF0aE1MQmxvY2s6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogfQogI2VuZGlmIC8vIEVOQUJMRShERUJVR19NQVRI
X0xBWU9VVCkKIAotLy8KLS8vIFRoZSBNYXRoTUwgc3BlY2lmaWNhdGlvbiBzYXlzOgotLy8gKGh0
dHA6Ly93d3cudzMub3JnL1RSL01hdGhNTC9jaGFwdGVyMi5odG1sI2Z1bmQudW5pdHMpCi0vLwot
Ly8gIk1vc3QgcHJlc2VudGF0aW9uIGVsZW1lbnRzIGhhdmUgYXR0cmlidXRlcyB0aGF0IGFjY2Vw
dCB2YWx1ZXMgcmVwcmVzZW50aW5nCi0vLyBsZW5ndGhzIHRvIGJlIHVzZWQgZm9yIHNpemUsIHNw
YWNpbmcgb3Igc2ltaWxhciBwcm9wZXJ0aWVzLiBUaGUgc3ludGF4IG9mIGEKLS8vIGxlbmd0aCBp
cyBzcGVjaWZpZWQgYXMKLS8vCi0vLyBudW1iZXIgfCBudW1iZXIgdW5pdCB8IG5hbWVkc3BhY2UK
LS8vCi0vLyBUaGVyZSBzaG91bGQgYmUgbm8gc3BhY2UgYmV0d2VlbiB0aGUgbnVtYmVyIGFuZCB0
aGUgdW5pdCBvZiBhIGxlbmd0aC4iCi0vLwotLy8gIkEgdHJhaWxpbmcgJyUnIHJlcHJlc2VudHMg
YSBwZXJjZW50IG9mIHRoZSBkZWZhdWx0IHZhbHVlLiBUaGUgZGVmYXVsdAotLy8gdmFsdWUsIG9y
IGhvdyBpdCBpcyBvYnRhaW5lZCwgaXMgbGlzdGVkIGluIHRoZSB0YWJsZSBvZiBhdHRyaWJ1dGVz
IGZvciBlYWNoCi0vLyBlbGVtZW50LiBbLi4uXSBBIG51bWJlciB3aXRob3V0IGEgdW5pdCBpcyBp
bnRlcHJldGVkIGFzIGEgbXVsdGlwbGUgb2YgdGhlCi0vLyBkZWZhdWx0IHZhbHVlLiIKLS8vCi0v
LyAiVGhlIHBvc3NpYmxlIHVuaXRzIGluIE1hdGhNTCBhcmU6Ci0vLwotLy8gVW5pdCBEZXNjcmlw
dGlvbgotLy8gZW0gICBhbiBlbSAoZm9udC1yZWxhdGl2ZSB1bml0IHRyYWRpdGlvbmFsbHkgdXNl
ZCBmb3IgaG9yaXpvbnRhbCBsZW5ndGhzKQotLy8gZXggICBhbiBleCAoZm9udC1yZWxhdGl2ZSB1
bml0IHRyYWRpdGlvbmFsbHkgdXNlZCBmb3IgdmVydGljYWwgbGVuZ3RocykKLS8vIHB4ICAgcGl4
ZWxzLCBvciBzaXplIG9mIGEgcGl4ZWwgaW4gdGhlIGN1cnJlbnQgZGlzcGxheQotLy8gaW4gICBp
bmNoZXMgKDEgaW5jaCA9IDIuNTQgY2VudGltZXRlcnMpCi0vLyBjbSAgIGNlbnRpbWV0ZXJzCi0v
LyBtbSAgIG1pbGxpbWV0ZXJzCi0vLyBwdCAgIHBvaW50cyAoMSBwb2ludCA9IDEvNzIgaW5jaCkK
LS8vIHBjICAgcGljYXMgKDEgcGljYSA9IDEyIHBvaW50cykKLS8vICUgICAgcGVyY2VudGFnZSBv
ZiBkZWZhdWx0IHZhbHVlIgotLy8KLS8vIFRoZSBudW1iZXJzIGFyZSBkZWZpbmVkIHRoYXQgd2F5
OgotLy8gLSB1bnNpZ25lZC1udW1iZXI6ICJhIHN0cmluZyBvZiBkZWNpbWFsIGRpZ2l0cyB3aXRo
IHVwIHRvIG9uZSBkZWNpbWFsIHBvaW50Ci0vLyAgIChVKzAwMkUpLCByZXByZXNlbnRpbmcgYSBu
b24tbmVnYXRpdmUgdGVybWluYXRpbmcgZGVjaW1hbCBudW1iZXIgKGEgdHlwZSBvZgotLy8gICBy
YXRpb25hbCBudW1iZXIpIgotLy8gLSBudW1iZXI6ICJhbiBvcHRpb25hbCBwcmVmaXggb2YgJy0n
IChVKzAwMkQpLCBmb2xsb3dlZCBieSBhbiB1bnNpZ25lZAotLy8gICBudW1iZXIsIHJlcHJlc2Vu
dGluZyBhIHRlcm1pbmF0aW5nIGRlY2ltYWwgbnVtYmVyIChhIHR5cGUgb2YgcmF0aW9uYWwKLS8v
ICAgbnVtYmVyKSIKLS8vCi1ib29sIHBhcnNlTWF0aE1MTGVuZ3RoKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBMYXlvdXRVbml0JiBsZW5ndGhWYWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBi
b29sIGFsbG93TmVnYXRpdmUpCitMYXlvdXRVbml0IHRvVXNlclVuaXRzKGNvbnN0IE1hdGhNTEVs
ZW1lbnQ6Okxlbmd0aCYgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IExh
eW91dFVuaXQmIHJlZmVyZW5jZVZhbHVlKQogewotICAgIFN0cmluZyBzID0gc3RyaW5nLnNpbXBs
aWZ5V2hpdGVTcGFjZSgpOwotCi0gICAgaW50IHN0cmluZ0xlbmd0aCA9IHMubGVuZ3RoKCk7Ci0g
ICAgaWYgKCFzdHJpbmdMZW5ndGgpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChw
YXJzZU1hdGhNTE5hbWVkU3BhY2UocywgbGVuZ3RoVmFsdWUsIHN0eWxlLCBhbGxvd05lZ2F0aXZl
KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBTdHJpbmdCdWlsZGVyIG51bWJlcjsKLSAg
ICBTdHJpbmcgdW5pdDsKLQotICAgIC8vIFRoaXMgdmVyaWZpZXMgd2hldGhlciB0aGUgbmVnYXRp
dmUgc2lnbiBpcyB0aGVyZS4KLSAgICBpbnQgaSA9IDA7Ci0gICAgVUNoYXIgYyA9IHNbMF07Ci0g
ICAgaWYgKGMgPT0gJy0nKSB7Ci0gICAgICAgIG51bWJlci5hcHBlbmQoYyk7Ci0gICAgICAgIGkr
KzsKLSAgICB9Ci0KLSAgICAvLyBUaGlzIGdhdGhlcnMgdXAgY2hhcmFjdGVycyB0aGF0IG1ha2Ug
dXAgdGhlIG51bWJlci4KLSAgICBib29sIGdvdERvdCA9IGZhbHNlOwotICAgIGZvciAoIDsgaSA8
IHN0cmluZ0xlbmd0aDsgaSsrKSB7Ci0gICAgICAgIGMgPSBzW2ldOwotICAgICAgICAvLyBUaGUg
c3RyaW5nIGlzIGludmFsaWQgaWYgaXQgY29udGFpbnMgdHdvIGRvdHMuCi0gICAgICAgIGlmIChn
b3REb3QgJiYgYyA9PSAnLicpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlm
IChjID09ICcuJykKLSAgICAgICAgICAgIGdvdERvdCA9IHRydWU7Ci0gICAgICAgIGVsc2UgaWYg
KCFpc0FTQ0lJRGlnaXQoYykpIHsKLSAgICAgICAgICAgIHVuaXQgPSBzLnN1YnN0cmluZyhpLCBz
dHJpbmdMZW5ndGggLSBpKTsKLSAgICAgICAgICAgIC8vIFNvbWUgYXV0aG9ycyBsZWF2ZSBibGFu
a3MgYmVmb3JlIHRoZSB1bml0LCBidXQgdGhhdCBzaG91bGRuJ3QKLSAgICAgICAgICAgIC8vIGJl
IGFsbG93ZWQsIHNvIGRvbid0IHNpbXBsaWZ5V2hpdGVzcGFjZSBvbiAndW5pdCcuCi0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBudW1iZXIuYXBwZW5kKGMpOworICAgIHN3
aXRjaCAobGVuZ3RoLnR5cGUpIHsKKyAgICBjYXNlIE1hdGhNTEVsZW1lbnQ6Okxlbmd0aFR5cGU6
OkNtOgorICAgICAgICByZXR1cm4gbGVuZ3RoLnZhbHVlICogY3NzUGl4ZWxzUGVySW5jaCAvIDIu
NTRmOworICAgIGNhc2UgTWF0aE1MRWxlbWVudDo6TGVuZ3RoVHlwZTo6RW06CisgICAgICAgIHJl
dHVybiBsZW5ndGgudmFsdWUgKiBzdHlsZS5mb250Q2FzY2FkZSgpLnNpemUoKTsKKyAgICBjYXNl
IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aFR5cGU6OkV4OgorICAgICAgICByZXR1cm4gbGVuZ3RoLnZh
bHVlICogc3R5bGUuZm9udE1ldHJpY3MoKS54SGVpZ2h0KCk7CisgICAgY2FzZSBNYXRoTUxFbGVt
ZW50OjpMZW5ndGhUeXBlOjpJbjoKKyAgICAgICAgcmV0dXJuIGxlbmd0aC52YWx1ZSAqIGNzc1Bp
eGVsc1BlckluY2g7CisgICAgY2FzZSBNYXRoTUxFbGVtZW50OjpMZW5ndGhUeXBlOjpNYXRoVW5p
dDoKKyAgICAgICAgcmV0dXJuIGxlbmd0aC52YWx1ZSAqIHN0eWxlLmZvbnRDYXNjYWRlKCkuc2l6
ZSgpIC8gMTg7CisgICAgY2FzZSBNYXRoTUxFbGVtZW50OjpMZW5ndGhUeXBlOjpNbToKKyAgICAg
ICAgcmV0dXJuIGxlbmd0aC52YWx1ZSAqIGNzc1BpeGVsc1BlckluY2ggLyAyNS40ZjsKKyAgICBj
YXNlIE1hdGhNTEVsZW1lbnQ6Okxlbmd0aFR5cGU6OlBjOgorICAgICAgICByZXR1cm4gbGVuZ3Ro
LnZhbHVlICogY3NzUGl4ZWxzUGVySW5jaCAvIDY7CisgICAgY2FzZSBNYXRoTUxFbGVtZW50OjpM
ZW5ndGhUeXBlOjpQZXJjZW50YWdlOgorICAgICAgICByZXR1cm4gcmVmZXJlbmNlVmFsdWUgKiBs
ZW5ndGgudmFsdWUgLyAxMDA7CisgICAgY2FzZSBNYXRoTUxFbGVtZW50OjpMZW5ndGhUeXBlOjpQ
dDoKKyAgICAgICAgcmV0dXJuIGxlbmd0aC52YWx1ZSAqIGNzc1BpeGVsc1BlckluY2ggLyA3MjsK
KyAgICBjYXNlIE1hdGhNTEVsZW1lbnQ6Okxlbmd0aFR5cGU6OlB4OgorICAgICAgICByZXR1cm4g
bGVuZ3RoLnZhbHVlOworICAgIGNhc2UgTWF0aE1MRWxlbWVudDo6TGVuZ3RoVHlwZTo6VW5pdExl
c3M6CisgICAgICAgIHJldHVybiByZWZlcmVuY2VWYWx1ZSAqIGxlbmd0aC52YWx1ZTsKKyAgICBj
YXNlIE1hdGhNTEVsZW1lbnQ6Okxlbmd0aFR5cGU6OlBhcnNpbmdGYWlsZWQ6CisgICAgICAgIHJl
dHVybiByZWZlcmVuY2VWYWx1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHJlZmVyZW5jZVZhbHVlOwogICAgIH0KK30KIAotICAg
IC8vIENvbnZlcnQgbnVtYmVyIHRvIGZsb2F0aW5nIHBvaW50Ci0gICAgYm9vbCBvazsKLSAgICBm
bG9hdCBmbG9hdFZhbHVlID0gbnVtYmVyLnRvU3RyaW5nKCkudG9GbG9hdCgmb2spOwotICAgIGlm
ICghb2spCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoZmxvYXRWYWx1ZSA8IDAgJiYg
IWFsbG93TmVnYXRpdmUpCitib29sIHBhcnNlTWF0aE1MTGVuZ3RoKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBMYXlvdXRVbml0JiBsZW5ndGhWYWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBi
b29sIGFsbG93TmVnYXRpdmUpCit7CisgICAgTWF0aE1MRWxlbWVudDo6TGVuZ3RoIGxlbmd0aCA9
IE1hdGhNTEVsZW1lbnQ6OnBhcnNlTWF0aE1MTGVuZ3RoKHN0cmluZyk7CisgICAgaWYgKGxlbmd0
aC50eXBlID09IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aFR5cGU6OlBhcnNpbmdGYWlsZWQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICh1bml0LmlzRW1wdHkoKSkgewotICAgICAgICAv
LyBubyBleHBsaWNpdCB1bml0LCB0aGlzIGlzIGEgbnVtYmVyIHRoYXQgd2lsbCBhY3QgYXMgYSBt
dWx0aXBsaWVyCi0gICAgICAgIGxlbmd0aFZhbHVlICo9IGZsb2F0VmFsdWU7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLSAgICBpZiAodW5pdCA9PSAiJSIpIHsKLSAgICAgICAgbGVuZ3Ro
VmFsdWUgKj0gZmxvYXRWYWx1ZSAvIDEwMDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
ICAgIGlmICh1bml0ID09ICJlbSIpIHsKLSAgICAgICAgbGVuZ3RoVmFsdWUgPSBmbG9hdFZhbHVl
ICogc3R5bGUtPmZvbnRDYXNjYWRlKCkuc2l6ZSgpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9Ci0gICAgaWYgKHVuaXQgPT0gImV4IikgewotICAgICAgICBsZW5ndGhWYWx1ZSA9IGZsb2F0
VmFsdWUgKiBzdHlsZS0+Zm9udE1ldHJpY3MoKS54SGVpZ2h0KCk7Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLSAgICBpZiAodW5pdCA9PSAicHgiKSB7Ci0gICAgICAgIGxlbmd0aFZhbHVl
ID0gZmxvYXRWYWx1ZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmICh1bml0
ID09ICJwdCIpIHsKLSAgICAgICAgbGVuZ3RoVmFsdWUgPSA0ICogKGZsb2F0VmFsdWUgLyAzKTsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmICh1bml0ID09ICJwYyIpIHsKLSAg
ICAgICAgbGVuZ3RoVmFsdWUgPSAxNiAqIGZsb2F0VmFsdWU7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLSAgICBpZiAodW5pdCA9PSAiaW4iKSB7Ci0gICAgICAgIGxlbmd0aFZhbHVlID0g
OTYgKiBmbG9hdFZhbHVlOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgaWYgKHVu
aXQgPT0gImNtIikgewotICAgICAgICBsZW5ndGhWYWx1ZSA9IDk2ICogKGZsb2F0VmFsdWUgLyAy
LjU0KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmICh1bml0ID09ICJtbSIp
IHsKLSAgICAgICAgbGVuZ3RoVmFsdWUgPSA5NiAqIChmbG9hdFZhbHVlIC8gMjUuNCk7Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KKyAgICBMYXlvdXRVbml0IHZhbHVlID0gdG9Vc2VyVW5p
dHMobGVuZ3RoLCAqc3R5bGUsIGxlbmd0aFZhbHVlKTsKIAotICAgIC8vIHVuZXhwZWN0ZWQgdW5p
dAotICAgIHJldHVybiBmYWxzZTsKLX0KKyAgICBpZiAoIWFsbG93TmVnYXRpdmUgJiYgdmFsdWUg
PCAwKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLWJvb2wgcGFyc2VNYXRoTUxOYW1lZFNwYWNl
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBMYXlvdXRVbml0JiBsZW5ndGhWYWx1ZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlLCBib29sIGFsbG93TmVnYXRpdmUpCi17Ci0gICAgZmxvYXQgbGVuZ3Ro
ID0gMDsKLSAgICAvLyBTZWUgaWYgaXQgaXMgb25lIG9mIHRoZSBuYW1lZHNwYWNlcyAocmFuZ2lu
ZyAtNy8xOGVtLCAtNi8xOCwgLi4uIDcvMThlbSkKLSAgICBpZiAoc3RyaW5nID09ICJ2ZXJ5dmVy
eXRoaW5tYXRoc3BhY2UiKQotICAgICAgICBsZW5ndGggPSAxOwotICAgIGVsc2UgaWYgKHN0cmlu
ZyA9PSAidmVyeXRoaW5tYXRoc3BhY2UiKQotICAgICAgICBsZW5ndGggPSAyOwotICAgIGVsc2Ug
aWYgKHN0cmluZyA9PSAidGhpbm1hdGhzcGFjZSIpCi0gICAgICAgIGxlbmd0aCA9IDM7Ci0gICAg
ZWxzZSBpZiAoc3RyaW5nID09ICJtZWRpdW1tYXRoc3BhY2UiKQotICAgICAgICBsZW5ndGggPSA0
OwotICAgIGVsc2UgaWYgKHN0cmluZyA9PSAidGhpY2ttYXRoc3BhY2UiKQotICAgICAgICBsZW5n
dGggPSA1OwotICAgIGVsc2UgaWYgKHN0cmluZyA9PSAidmVyeXRoaWNrbWF0aHNwYWNlIikKLSAg
ICAgICAgbGVuZ3RoID0gNjsKLSAgICBlbHNlIGlmIChzdHJpbmcgPT0gInZlcnl2ZXJ5dGhpY2tt
YXRoc3BhY2UiKQotICAgICAgICBsZW5ndGggPSA3OwotICAgIGVsc2UgaWYgKGFsbG93TmVnYXRp
dmUpIHsKLSAgICAgICAgaWYgKHN0cmluZyA9PSAibmVnYXRpdmV2ZXJ5dmVyeXRoaW5tYXRoc3Bh
Y2UiKQotICAgICAgICAgICAgbGVuZ3RoID0gLTE7Ci0gICAgICAgIGVsc2UgaWYgKHN0cmluZyA9
PSAibmVnYXRpdmV2ZXJ5dGhpbm1hdGhzcGFjZSIpCi0gICAgICAgICAgICBsZW5ndGggPSAtMjsK
LSAgICAgICAgZWxzZSBpZiAoc3RyaW5nID09ICJuZWdhdGl2ZXRoaW5tYXRoc3BhY2UiKQotICAg
ICAgICAgICAgbGVuZ3RoID0gLTM7Ci0gICAgICAgIGVsc2UgaWYgKHN0cmluZyA9PSAibmVnYXRp
dmVtZWRpdW1tYXRoc3BhY2UiKQotICAgICAgICAgICAgbGVuZ3RoID0gLTQ7Ci0gICAgICAgIGVs
c2UgaWYgKHN0cmluZyA9PSAibmVnYXRpdmV0aGlja21hdGhzcGFjZSIpCi0gICAgICAgICAgICBs
ZW5ndGggPSAtNTsKLSAgICAgICAgZWxzZSBpZiAoc3RyaW5nID09ICJuZWdhdGl2ZXZlcnl0aGlj
a21hdGhzcGFjZSIpCi0gICAgICAgICAgICBsZW5ndGggPSAtNjsKLSAgICAgICAgZWxzZSBpZiAo
c3RyaW5nID09ICJuZWdhdGl2ZXZlcnl2ZXJ5dGhpY2ttYXRoc3BhY2UiKQotICAgICAgICAgICAg
bGVuZ3RoID0gLTc7Ci0gICAgfQotICAgIGlmIChsZW5ndGgpIHsKLSAgICAgICAgbGVuZ3RoVmFs
dWUgPSBsZW5ndGggKiBzdHlsZS0+Zm9udENhc2NhZGUoKS5zaXplKCkgLyAxODsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICBsZW5ndGhWYWx1ZSA9
IHZhbHVlOworICAgIHJldHVybiB0cnVlOwogfQogCiBPcHRpb25hbDxpbnQ+IFJlbmRlck1hdGhN
TFRhYmxlOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKaW5kZXggMTQ1NmM5MS4uOWIz
YjNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MQmxvY2suaApAQCAtMjksNiArMjksNyBAQAogCiAjaWYgRU5BQkxFKE1BVEhNTCkKIAor
I2luY2x1ZGUgIk1hdGhNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJNYXRoTUxTdHlsZS5oIgogI2lu
Y2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGUuaCIKQEAgLTExNiw3
ICsxMTcsNyBAQCBwcml2YXRlOgogCiAvLyBQYXJzaW5nIGZ1bmN0aW9ucyBmb3IgTWF0aE1MIExl
bmd0aCB2YWx1ZXMKIGJvb2wgcGFyc2VNYXRoTUxMZW5ndGgoY29uc3QgU3RyaW5nJiwgTGF5b3V0
VW5pdCYsIGNvbnN0IFJlbmRlclN0eWxlKiwgYm9vbCBhbGxvd05lZ2F0aXZlID0gdHJ1ZSk7Ci1i
b29sIHBhcnNlTWF0aE1MTmFtZWRTcGFjZShjb25zdCBTdHJpbmcmLCBMYXlvdXRVbml0JiwgY29u
c3QgUmVuZGVyU3R5bGUqLCBib29sIGFsbG93TmVnYXRpdmUgPSB0cnVlKTsKK0xheW91dFVuaXQg
dG9Vc2VyVW5pdHMoY29uc3QgTWF0aE1MRWxlbWVudDo6TGVuZ3RoJiwgY29uc3QgUmVuZGVyU3R5
bGUmLCBjb25zdCBMYXlvdXRVbml0JiByZWZlcmVuY2VWYWx1ZSk7CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxTcGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFNwYWNlLmNwcAppbmRleCAwYzk3NzA0Li41ZWY4MTA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcApA
QCAtMzYsMTEgKzM2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2Ug
TWF0aE1MTmFtZXM7CiAKLVJlbmRlck1hdGhNTFNwYWNlOjpSZW5kZXJNYXRoTUxTcGFjZShNYXRo
TUxUZXh0RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKK1JlbmRlck1hdGhN
TFNwYWNlOjpSZW5kZXJNYXRoTUxTcGFjZShNYXRoTUxTcGFjZUVsZW1lbnQmIGVsZW1lbnQsIFJl
bmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxCbG9jayhlbGVtZW50LCBXVEZN
b3ZlKHN0eWxlKSkKLSAgICAsIG1fd2lkdGgoMCkKLSAgICAsIG1faGVpZ2h0KDApCi0gICAgLCBt
X2RlcHRoKDApCiB7CiB9CiAKQEAgLTQ4LDM0ICs0NSwyOSBAQCB2b2lkIFJlbmRlck1hdGhNTFNw
YWNlOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiB7CiAgICAgQVNTRVJUKHByZWZl
cnJlZExvZ2ljYWxXaWR0aHNEaXJ0eSgpKTsKIAotICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdp
ZHRoID0gbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBtX3dpZHRoOworICAgIG1fbWluUHJl
ZmVycmVkTG9naWNhbFdpZHRoID0gbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBzcGFjZVdp
ZHRoKCk7CiAKICAgICBzZXRQcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkoZmFsc2UpOwogfQog
Ci12b2lkIFJlbmRlck1hdGhNTFNwYWNlOjp1cGRhdGVGcm9tRWxlbWVudCgpCitMYXlvdXRVbml0
IFJlbmRlck1hdGhNTFNwYWNlOjpzcGFjZVdpZHRoKCkgY29uc3QKIHsKLSAgICBjb25zdCBhdXRv
JiBzcGFjZUVsZW1lbnQgPSBlbGVtZW50KCk7Ci0KLSAgICAvLyBUaGlzIHBhcnNlcyB0aGUgbXNw
YWNlIGF0dHJpYnV0ZXMsIHVzaW5nIDAgYXMgdGhlIGRlZmF1bHQgdmFsdWVzLgotICAgIG1fd2lk
dGggPSAwOwotICAgIG1faGVpZ2h0ID0gMDsKLSAgICBtX2RlcHRoID0gMDsKLSAgICBwYXJzZU1h
dGhNTExlbmd0aChzcGFjZUVsZW1lbnQuZ2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjp3aWR0aEF0
dHIpLCBtX3dpZHRoLCAmc3R5bGUoKSk7Ci0gICAgcGFyc2VNYXRoTUxMZW5ndGgoc3BhY2VFbGVt
ZW50LmdldEF0dHJpYnV0ZShNYXRoTUxOYW1lczo6aGVpZ2h0QXR0ciksIG1faGVpZ2h0LCAmc3R5
bGUoKSk7Ci0gICAgcGFyc2VNYXRoTUxMZW5ndGgoc3BhY2VFbGVtZW50LmdldEF0dHJpYnV0ZShN
YXRoTUxOYW1lczo6ZGVwdGhBdHRyKSwgbV9kZXB0aCwgJnN0eWxlKCkpOworICAgIGF1dG8mIHNw
YWNlRWxlbWVudCA9IGVsZW1lbnQoKTsKKyAgICAvLyBGSVhNRTogTmVnYXRpdmUgd2lkdGggdmFs
dWVzIGFyZSBub3Qgc3VwcG9ydGVkIHlldC4KKyAgICByZXR1cm4gc3RkOjptYXg8TGF5b3V0VW5p
dD4oMCwgdG9Vc2VyVW5pdHMoc3BhY2VFbGVtZW50LndpZHRoKCksIHN0eWxlKCksIDApKTsKK30K
IAotICAgIC8vIEZJWE1FOiBOZWdhdGl2ZSB3aWR0aCB2YWx1ZXMgc2hvdWxkIGJlIGFjY2VwdGVk
LgotICAgIGlmIChtX3dpZHRoIDwgMCkKLSAgICAgICAgbV93aWR0aCA9IDA7Cit2b2lkIFJlbmRl
ck1hdGhNTFNwYWNlOjpnZXRTcGFjZUhlaWdodEFuZERlcHRoKExheW91dFVuaXQmIGhlaWdodCwg
TGF5b3V0VW5pdCYgZGVwdGgpIGNvbnN0Cit7CisgICAgYXV0byYgc3BhY2VFbGVtZW50ID0gZWxl
bWVudCgpOworICAgIGhlaWdodCA9IHRvVXNlclVuaXRzKHNwYWNlRWxlbWVudC5oZWlnaHQoKSwg
c3R5bGUoKSwgMCk7CisgICAgZGVwdGggPSB0b1VzZXJVbml0cyhzcGFjZUVsZW1lbnQuZGVwdGgo
KSwgc3R5bGUoKSwgMCk7CiAKICAgICAvLyBJZiB0aGUgdG90YWwgaGVpZ2h0IGlzIG5lZ2F0aXZl
LCBzZXQgdmVydGljYWwgZGltZW5zaW9ucyB0byAwLgotICAgIGlmIChtX2hlaWdodCArIG1fZGVw
dGggPCAwKSB7Ci0gICAgICAgIG1faGVpZ2h0ID0gMDsKLSAgICAgICAgbV9kZXB0aCA9IDA7Cisg
ICAgaWYgKGhlaWdodCArIGRlcHRoIDwgMCkgeworICAgICAgICBoZWlnaHQgPSAwOworICAgICAg
ICBkZXB0aCA9IDA7CiAgICAgfQotCi0gICAgc2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVj
YWxjKCk7CiB9CiAKIHZvaWQgUmVuZGVyTWF0aE1MU3BhY2U6OmxheW91dEJsb2NrKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCkKQEAgLTg1LDIxICs3NywxOSBAQCB2b2lkIFJlbmRl
ck1hdGhNTFNwYWNlOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVu
aXQpCiAgICAgaWYgKCFyZWxheW91dENoaWxkcmVuICYmIHNpbXBsaWZpZWRMYXlvdXQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgc2V0TG9naWNhbFdpZHRoKG1fd2lkdGgpOwotICAgIHNldExv
Z2ljYWxIZWlnaHQobV9oZWlnaHQgKyBtX2RlcHRoKTsKKyAgICBzZXRMb2dpY2FsV2lkdGgoc3Bh
Y2VXaWR0aCgpKTsKKyAgICBMYXlvdXRVbml0IGhlaWdodCwgZGVwdGg7CisgICAgZ2V0U3BhY2VI
ZWlnaHRBbmREZXB0aChoZWlnaHQsIGRlcHRoKTsKKyAgICBzZXRMb2dpY2FsSGVpZ2h0KGhlaWdo
dCArIGRlcHRoKTsKIAogICAgIGNsZWFyTmVlZHNMYXlvdXQoKTsKIH0KIAotdm9pZCBSZW5kZXJN
YXRoTUxTcGFjZTo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJl
bmRlclN0eWxlKiBvbGRTdHlsZSkKLXsKLSAgICBSZW5kZXJNYXRoTUxCbG9jazo6c3R5bGVEaWRD
aGFuZ2UoZGlmZiwgb2xkU3R5bGUpOwotICAgIHVwZGF0ZUZyb21FbGVtZW50KCk7Ci19Ci0KIE9w
dGlvbmFsPGludD4gUmVuZGVyTWF0aE1MU3BhY2U6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gT3B0aW9uYWw8aW50PihtX2hlaWdodCk7CisgICAgTGF5b3V0VW5pdCBo
ZWlnaHQsIGRlcHRoOworICAgIGdldFNwYWNlSGVpZ2h0QW5kRGVwdGgoaGVpZ2h0LCBkZXB0aCk7
CisgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oaGVpZ2h0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oCmluZGV4IGFk
YmU5ODMuLmZmZDQ5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MU3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFNwYWNlLmgKQEAgLTI4LDI5ICsyOCwyNiBAQAogCiAjaWYgRU5BQkxF
KE1BVEhNTCkKIAotI2luY2x1ZGUgIk1hdGhNTFRleHRFbGVtZW50LmgiCisjaW5jbHVkZSAiTWF0
aE1MU3BhY2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyTWF0aE1MQmxvY2suaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJNYXRoTUxTcGFjZSBmaW5hbCA6IHB1Ymxp
YyBSZW5kZXJNYXRoTUxCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MU3BhY2UoTWF0
aE1MVGV4dEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKLSAgICBNYXRoTUxUZXh0RWxlbWVudCYg
ZWxlbWVudCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE1hdGhNTFRleHRFbGVtZW50Jj4obm9kZUZv
ck5vbkFub255bW91cygpKTsgfQorICAgIFJlbmRlck1hdGhNTFNwYWNlKE1hdGhNTFNwYWNlRWxl
bWVudCYsIFJlbmRlclN0eWxlJiYpOworICAgIE1hdGhNTFNwYWNlRWxlbWVudCYgZWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE1hdGhNTFNwYWNlRWxlbWVudCY+KG5vZGVGb3JO
b25Bbm9ueW1vdXMoKSk7IH0KIAogcHJpdmF0ZToKICAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1hdGhNTFNwYWNlIjsgfQogICAgIGJvb2wg
aXNSZW5kZXJNYXRoTUxTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2
b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9s
ZFN0eWxlKSBmaW5hbDsKICAgICBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVj
dCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgZmluYWw7CiAgICAgdm9pZCBjb21wdXRlUHJlZmVy
cmVkTG9naWNhbFdpZHRocygpIGZpbmFsOwogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxh
eW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMCkgZmluYWw7CiAg
ICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwogCi0gICAg
TGF5b3V0VW5pdCBtX3dpZHRoOwotICAgIExheW91dFVuaXQgbV9oZWlnaHQ7Ci0gICAgTGF5b3V0
VW5pdCBtX2RlcHRoOworICAgIExheW91dFVuaXQgc3BhY2VXaWR0aCgpIGNvbnN0OworICAgIHZv
aWQgZ2V0U3BhY2VIZWlnaHRBbmREZXB0aChMYXlvdXRVbml0JiBoZWlnaHQsIExheW91dFVuaXQm
IGRlcHRoKSBjb25zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283387</attachid>
            <date>2016-07-11 21:57:01 -0700</date>
            <delta_ts>2016-07-11 21:57:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Bug-156795-Move-parsing-of-mspace-attributes-to-a-Ma.patch</filename>
            <type>text/plain</type>
            <size>22385</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">RnJvbSBmMjJjYzdlODhkZjNjYjhiYTMzZTQwZWEwNzEwY2FjZjBiMjZkN2Y3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBGcmVkZXJpYyBXYW5nIDxmcmVkLndhbmdAZnJlZS5mcj4KRGF0
ZTogVHVlLCAxMiBKdWwgMjAxNiAwNjo1NTozMCArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIEJ1ZyAx
NTY3OTUgLSBNb3ZlIHBhcnNpbmcgb2YgbXNwYWNlIGF0dHJpYnV0ZXMgdG8gYQogTWF0aE1MU3Bh
Y2VFbGVtZW50IGNsYXNzCgotLS0KIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0ICAgICAg
ICAgICAgICAgICAgICAgIHwgIDEgKwogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCA0MCArKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qICAgfCAgOCArKysKIFNvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxFbGVtZW50LmNwcCAgICAgICAgICAgIHwgIDkgKysrCiBTb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oICAgICAgICAgICAgICB8ICAzICsKIFNvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuY3BwICAgICAgIHwgODMgKysrKysrKysrKysr
KysrKysrKysrKwogU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5oICAg
ICAgICAgfCA1NCArKysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRl
eHRFbGVtZW50LmNwcCAgICAgICAgfCAgMyAtCiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvbWF0aHRh
Z3MuaW4gICAgICAgICAgICAgICAgICB8ICAyICstCiAuLi4vV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcCB8IDU0ICsrKysrKy0tLS0tLS0tCiAuLi4vV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmggICB8IDEzICsrLS0KIDExIGZp
bGVzIGNoYW5nZWQsIDIyNiBpbnNlcnRpb25zKCspLCA0NCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1l
bnQuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZTc4YjA0Mi4uYWU2ZmM1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTE5ODcsNiArMTk4Nyw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAg
ICBtYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCiAgICAgbWF0aG1sL01hdGhNTE1lbmNsb3Nl
RWxlbWVudC5jcHAKICAgICBtYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAKKyAgICBtYXRo
bWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcAogICAgIG1hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5j
cHAKIAogICAgIHBhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTI4
NTM0MC4uODRiMjEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ1IEBACiAyMDE2LTA3LTExICBG
cmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLm9yZz4KIAorICAgICAgICBNb3ZlIHBhcnNpbmcg
b2YgbXNwYWNlIGF0dHJpYnV0ZXMgdG8gYSBNYXRoTUxTcGFjZUVsZW1lbnQgY2xhc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Njc5NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
bHJlYWR5IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDogQWRkIE1hdGhNTFNwYWNlRWxlbWVudCB0byB0aGUgYnVpbGQgc3lzdGVtLgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICog
bWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRWxlbWVu
dDo6Y2FjaGVkTWF0aE1MTGVuZ3RoKTogSGVscGVyIGZ1bmN0aW9uIHRvIHJldHVybmVkIHRoZSBj
YWNoZWQgcGFyc2VkCisgICAgICAgIHZhbHVlIG9mIGEgTWF0aE1MIGxlbmd0aCBhbmQgcGFyc2lu
ZyB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgdmFsdWUgaWYgdGhlIGNhY2hlIGlzIGRpcnR5
LgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxFbGVtZW50Lmg6IEFkZCBhIGRpcnR5IGJvb2xlYW4g
dG8gTWF0aE1MIExlbmd0aCBzdHJ1Y3R1cmUuIERlY2xhcmUgY2FjaGVkTWF0aE1MTGVuZ3RoLgor
ICAgICAgICAqIG1hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuY3BwOiBOZXcgY2xhc3MgZm9yIHRo
ZSA8bXNwYWNlPiBlbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MU3BhY2VFbGVtZW50
OjpNYXRoTUxTcGFjZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MU3BhY2VFbGVt
ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MU3BhY2VFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6IE1ha2Ugd2lkdGgsIGhlaWdodCwgZGVwdGggYXR0cmlidXRlcyBkaXJ0eS4K
KyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFNwYWNlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50Lmg6IE5ldyBjbGFzcyBm
b3IgdGhlIDxtc3BhY2U+IGVsZW1lbnQuCisgICAgICAgIFdlIGRlZmluZSBNYXRoTUwgbGVuZ3Ro
cyBmb3Igd2lkdGgsIGhlaWdodCBhbmQgZGVwdGggYXR0cmlidXRlcyBhcmUgb24gdGhlIGNsYXNz
IGFuZCBleHBvc2UKKyAgICAgICAgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBoZWxwZXIgZnVuY3Rp
b25zIHZpYSBtZW1vaXphdGlvbi4KKyAgICAgICAgKiBtYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQu
Y3BwOiBSZW1vdmUgaGFuZGxpbmcgb2YgbXNwYWNlIGZyb20gdGhpcyBjbGFzcy4KKyAgICAgICAg
KFdlYkNvcmU6Ok1hdGhNTFRleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAg
ICAgICAqIG1hdGhtbC9tYXRodGFncy5pbjogQ2hhbmdlIHRoZSBpbnRlcmZhY2UgZm9yIG1zcGFj
ZSB0byB1c2UgdGhlIG5ldyBjbGFzcy4KKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFNwYWNlLmNwcDogRG8gbm90IHN0b3JlIHdpZHRoL2hlaWdodC9kZXB0aCB2YWx1ZXMg
b24gdGhlCisgICAgICAgIHJlbmRlcmVyIGFuZCBpbnN0ZWFkIGp1c3QgdXNlIHRoZSBjb3JyZXNw
b25kaW5nIE1hdGhNTCBsZW5ndGhzIG9uIHRoZSBlbGVtZW50IGNsYXNzLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWF0aE1MU3BhY2U6OlJlbmRlck1hdGhNTFNwYWNlKTogVXNlIE1hdGhNTFNw
YWNlRWxlbWVudCBhbmQgcmVtb3ZlIG1lbWJlcgorICAgICAgICBpbml0aWFsaXphdGlvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFNwYWNlOjpjb21wdXRlUHJlZmVycmVkTG9naWNh
bFdpZHRocyk6IFVzZSBzcGFjZVdpZHRoKCkuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRo
TUxTcGFjZTo6c3BhY2VXaWR0aCk6IEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHRoZSB3aWR0
aCBhdHRyaWJ1dGUgdmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTcGFjZTo6
Z2V0U3BhY2VIZWlnaHRBbmREZXB0aCk6IERpdHRvIGZvciBoZWlnaHQgYW5kIGRlcHRoLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU3BhY2U6OmxheW91dEJsb2NrKTogVXNlIHRoZSBo
ZWxwZXIgZnVuY3Rpb25zIHRvIGdldCB0aGUgbXNwYWNlIG1ldHJpY3MuCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNYXRoTUxTcGFjZTo6Zmlyc3RMaW5lQmFzZWxpbmUpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFNwYWNlOjp1cGRhdGVGcm9tRWxlbWVudCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTcGFjZTo6c3R5bGVEaWRDaGFuZ2Up
OiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2Uu
aDogVXNlIE1hdGhNTFNwYWNlRWxlbWVudCwgcmVwbGFjZSBtZW1iZXJzIHdpdGggaGVscGVyCisg
ICAgICAgIGZ1bmN0aW9ucyBhbmQgYW5kIG1ha2UgZWxlbWVudCgpIHVzYWJsZSBmcm9tIGEgY29u
c3QgaW5zdGFuY2UuCisKKzIwMTYtMDctMTEgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEu
b3JnPgorCiAgICAgICAgIENyZWF0ZSBhIE1hdGhNTExlbmd0aCBzdHJ1Y3QgdG8gaGFuZGxlIHRo
ZSBwYXJzaW5nIG9mIE1hdGhNTCBsZW5ndGguCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY3OTIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMxMWJjNDcuLjA1MjdmN2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTY4OTMsNiArNjg5Myw4IEBACiAJCUY5OEZGRjQ0MTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0
aWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5
OEZGRjQyMTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmNwcCAqLzsgfTsKIAkJRjk4RkZG
NDUxMUEyNjc2MjAwRjU0OEU4IC8qIENTU09NVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5OEZGRjQzMTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NP
TVV0aWxzLmggKi87IH07CiAJCUY5RjBFRDdBMERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVx
dWVzdFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY5RjBFRDc3MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dy
ZXNzRXZlbnQuaCAqLzsgfTsKKwkJNEZBNjVBNkIxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNw
YWNlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0RkE2NUE2OTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MU3BhY2VFbGVtZW50LmNwcCAq
LzsgfTsKKwkJNEZBNjVBNkMxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEZBNjVBNkEx
MTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxlbWVudC5oICovOyB9OwogCQlGQTY1NEE2
QjExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE2NTRBNjkxMTA4QUJFRDAwMjYxNUUw
IC8qIE1hdGhNTFRleHRFbGVtZW50LmNwcCAqLzsgfTsKIAkJRkE2NTRBNkMxMTA4QUJFRDAwMjYx
NUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGQTY1NEE2QTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVs
ZW1lbnQuaCAqLzsgfTsKIAkJRkFCRTcyRjQxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkFC
RTcyRUQxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuY3BwICovOyB9OwpAQCAtMTUw
NTUsNiArMTUwNTcsOCBAQAogCQlGOUYwRUQ3ODBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJl
cXVlc3RQcm9ncmVzc0V2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gWE1MSHR0cFJl
cXVlc3RQcm9ncmVzc0V2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkE2
NTRBNjMxMTA4QUJCNzAwMjYxNUUwIC8qIG1hdGhtbC5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsg
cGF0aCA9IG1hdGhtbC5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBNjU0QTY3
MTEwOEFCRTIwMDI2MTVFMCAvKiBtYXRoYXR0cnMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
bWF0aGF0dHJzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0RkE2NUE2OTExMDhB
QkVEMDAyNjE1RTAgLyogTWF0aE1MU3BhY2VFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTFNwYWNlRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTRGQTY1QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxTcGFjZUVs
ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aE1MU3BhY2VFbGVt
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBNjU0QTY5MTEwOEFCRUQwMDI2
MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNYXRoTUxUZXh0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZBNjU0QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxUZXh0RWxlbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQTZFNDY2RkNEMDQxOEE5OTY2QTVCNjAgLyogRE5T
UmVzb2x2ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEROU1Jlc29s
dmVRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQ4NjIsNiArMjQ4NjYs
OCBAQAogCQkJCUNFNkQ4OTI5NEM3QUFDRTBBRDg5QjNERCAvKiBNYXRoTUxNZW5jbG9zZUVsZW1l
bnQuaCAqLywKIAkJCQlGNzVBMDU5QUYxNzBEOEZBQTVCOENBQkUgLyogTWF0aE1MU2VsZWN0RWxl
bWVudC5jcHAgKi8sCiAJCQkJNTk3ODA4NDlENDFFNkY2NUQ4MTE5OEJDIC8qIE1hdGhNTFNlbGVj
dEVsZW1lbnQuaCAqLywKKwkJCQk0RkE2NUE2OTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MU3Bh
Y2VFbGVtZW50LmNwcCAqLywKKwkJCQk0RkE2NUE2QTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1M
U3BhY2VFbGVtZW50LmggKi8sCiAJCQkJRkE2NTRBNjkxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhN
TFRleHRFbGVtZW50LmNwcCAqLywKIAkJCQlGQTY1NEE2QTExMDhBQkVEMDAyNjE1RTAgLyogTWF0
aE1MVGV4dEVsZW1lbnQuaCAqLywKIAkJCQlGQUJFNzJGMzEwNTlDMUVCMDBEOTk5REQgLyogbWF0
aHRhZ3MuaW4gKi8sCkBAIC0yNzM5OCw2ICsyNzQwNCw3IEBACiAJCQkJNDRBMjhBQUYxMkRGQjhC
RjAwQUU5MjNCIC8qIE1hdGhNTE5hbWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzkwNDZFMDEy
REEyNUUxN0JBRjgwQTIgLyogTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MzkxNzZFMDEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTRGQTY1QTZDMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxTcGFjZUVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZBNjU0QTZDMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRo
TUxUZXh0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5MDQ2RUExMkRBMjVFODEyQUY4
MEFDIC8qIE1hdGhPcGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlENURDMkMwRjQyM0E3
MzAwOEYyMEZEIC8qIE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywK
QEAgLTMxMjIxLDYgKzMxMjI4LDcgQEAKIAkJCQk0MzkwNDZERjEyREEyNUUxN0JBRjgwQTIgLyog
TWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzOTE3NkRG
MTJEQTI1RTE3QkFGODBBMiAvKiBNYXRoTUxTdHlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
RUQ0ODM5MENFRDY2QzMyNTVGNzJDNTkgLyogTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk0RkE2NUE2QjExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MU3BhY2VFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZBNjU0QTZCMTEwOEFCRUQwMDI2MTVFMCAvKiBN
YXRoTUxUZXh0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzkwNDZFOTEyREEyNUU4
MTJBRjgwQUMgLyogTWF0aE9wZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RDVEQzJC
MEY0MjNBNzMwMDhGMjBGRCAvKiBNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcAppbmRleCA3ZTA0
NjVmLi5hOTBmZjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCkBA
IC01MTYsNiArNTE2LDE1IEBAIE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCBNYXRoTUxFbGVtZW50Ojpw
YXJzZU1hdGhNTExlbmd0aChjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gcGFyc2VO
YW1lZFNwYWNlKHN0cmluZ1ZpZXcpOwogfQogCitjb25zdCBNYXRoTUxFbGVtZW50OjpMZW5ndGgm
IE1hdGhNTEVsZW1lbnQ6OmNhY2hlZE1hdGhNTExlbmd0aChjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBMZW5ndGgmIGxlbmd0aCkKK3sKKyAgICBpZiAobGVuZ3RoLmRpcnR5KSB7CisgICAgICAg
IGxlbmd0aCA9IHBhcnNlTWF0aE1MTGVuZ3RoKGZhc3RHZXRBdHRyaWJ1dGUobmFtZSkpOworICAg
ICAgICBsZW5ndGguZGlydHkgPSBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIGxlbmd0aDsKK30K
KwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKE1BVEhNTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
RWxlbWVudC5oCmluZGV4IDI5Mjk0NDEuLjIxNmNlYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTEVsZW1lbnQuaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgc3RydWN0IExlbmd0
aCB7CiAgICAgICAgIExlbmd0aFR5cGUgdHlwZSB7IExlbmd0aFR5cGU6OlBhcnNpbmdGYWlsZWQg
fTsKICAgICAgICAgZmxvYXQgdmFsdWUgeyAwIH07CisgICAgICAgIGJvb2wgZGlydHkgeyB0cnVl
IH07CiAgICAgfTsKICAgICBzdGF0aWMgTGVuZ3RoIHBhcnNlTWF0aE1MTGVuZ3RoKGNvbnN0IFN0
cmluZyYpOwogCkBAIC04Miw2ICs4Myw4IEBAIHByb3RlY3RlZDoKICAgICBib29sIHdpbGxSZXNw
b25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CiAKKyAgICBjb25zdCBMZW5ndGgmIGNhY2hlZE1hdGhN
TExlbmd0aChjb25zdCBRdWFsaWZpZWROYW1lJiwgTGVuZ3RoJik7CisKIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVNlbGVjdGVkQ2hpbGQoKSB7IH0KICAgICBzdGF0aWMgTGVuZ3Ro
IHBhcnNlTnVtYmVyQW5kVW5pdChjb25zdCBTdHJpbmdWaWV3Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjQxYzllNGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1BVEhNTCkK
KyNpbmNsdWRlICJNYXRoTUxTcGFjZUVsZW1lbnQuaCIKKworI2luY2x1ZGUgIlJlbmRlck1hdGhN
TFNwYWNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIE1hdGhN
TE5hbWVzOworCitNYXRoTUxTcGFjZUVsZW1lbnQ6Ok1hdGhNTFNwYWNlRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCisgICAgOiBNYXRoTUxF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQoreworfQorCitSZWY8TWF0aE1MU3BhY2VFbGVtZW50
PiBNYXRoTUxTcGFjZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWF0aE1M
U3BhY2VFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7Cit9CisKK2NvbnN0IE1hdGhNTEVsZW1l
bnQ6Okxlbmd0aCYgTWF0aE1MU3BhY2VFbGVtZW50Ojp3aWR0aCgpCit7CisgICAgcmV0dXJuIGNh
Y2hlZE1hdGhNTExlbmd0aChNYXRoTUxOYW1lczo6d2lkdGhBdHRyLCBtX3dpZHRoKTsKK30KKwor
Y29uc3QgTWF0aE1MRWxlbWVudDo6TGVuZ3RoJiBNYXRoTUxTcGFjZUVsZW1lbnQ6OmhlaWdodCgp
Cit7CisgICAgcmV0dXJuIGNhY2hlZE1hdGhNTExlbmd0aChNYXRoTUxOYW1lczo6aGVpZ2h0QXR0
ciwgbV9oZWlnaHQpOworfQorCitjb25zdCBNYXRoTUxFbGVtZW50OjpMZW5ndGgmIE1hdGhNTFNw
YWNlRWxlbWVudDo6ZGVwdGgoKQoreworICAgIHJldHVybiBjYWNoZWRNYXRoTUxMZW5ndGgoTWF0
aE1MTmFtZXM6OmRlcHRoQXR0ciwgbV9kZXB0aCk7Cit9CisKK3ZvaWQgTWF0aE1MU3BhY2VFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKQoreworICAgIGlmIChuYW1lID09IHdpZHRoQXR0cikKKyAgICAgICAg
bV93aWR0aC5kaXJ0eSA9IHRydWU7CisgICAgZWxzZSBpZiAobmFtZSA9PSBoZWlnaHRBdHRyKQor
ICAgICAgICBtX2hlaWdodC5kaXJ0eSA9IHRydWU7CisgICAgZWxzZSBpZiAobmFtZSA9PSBkZXB0
aEF0dHIpCisgICAgICAgIG1fZGVwdGguZGlydHkgPSB0cnVlOworCisgICAgTWF0aE1MRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOworfQorCitSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gTWF0aE1MU3BhY2VFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5
bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK3sKKyAgICBBU1NFUlQoaGFz
VGFnTmFtZShNYXRoTUxOYW1lczo6bXNwYWNlVGFnKSk7CisgICAgcmV0dXJuIGNyZWF0ZVJlbmRl
cmVyPFJlbmRlck1hdGhNTFNwYWNlPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOworfQorCit9CisK
KyNlbmRpZiAvLyBFTkFCTEUoTUFUSE1MKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTFNwYWNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNw
YWNlRWxlbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmOGUxNjgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVt
ZW50LmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEg
Uy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBN
YXRoTUxTcGFjZUVsZW1lbnRfaAorI2RlZmluZSBNYXRoTUxTcGFjZUVsZW1lbnRfaAorCisjaWYg
RU5BQkxFKE1BVEhNTCkKKyNpbmNsdWRlICJNYXRoTUxFbGVtZW50LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgTWF0aE1MU3BhY2VFbGVtZW50IGZpbmFsIDogcHVibGljIE1hdGhN
TEVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8TWF0aE1MU3BhY2VFbGVtZW50PiBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKKyAgICBjb25z
dCBMZW5ndGgmIHdpZHRoKCk7CisgICAgY29uc3QgTGVuZ3RoJiBoZWlnaHQoKTsKKyAgICBjb25z
dCBMZW5ndGgmIGRlcHRoKCk7Citwcml2YXRlOgorICAgIE1hdGhNTFNwYWNlRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOworICAgIGJvb2wgaXNQcmVzZW50
YXRpb25NYXRoTUwoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5hbDsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKKworICAgIExl
bmd0aCBtX3dpZHRoOworICAgIExlbmd0aCBtX2hlaWdodDsKKyAgICBMZW5ndGggbV9kZXB0aDsK
K307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNQVRITUwpCisjZW5kaWYgLy8gTWF0aE1MU3Bh
Y2VFbGVtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3Bw
CmluZGV4IGIzNjZiMTAuLjBlMzg1YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxUZXh0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TFRleHRFbGVtZW50LmNwcApAQCAtMzIsNyArMzIsNiBAQAogCiAjaW5jbHVkZSAiTWF0aE1MTmFt
ZXMuaCIKICNpbmNsdWRlICJSZW5kZXJNYXRoTUxPcGVyYXRvci5oIgotI2luY2x1ZGUgIlJlbmRl
ck1hdGhNTFNwYWNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyTWF0aE1MVG9rZW4uaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtODIsOCArODEsNiBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
TWF0aE1MVGV4dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmCiB7
CiAgICAgaWYgKGhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1vVGFnKSkKICAgICAgICAgcmV0dXJu
IGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTE9wZXJhdG9yPigqdGhpcywgV1RGTW92ZShzdHls
ZSkpOwotICAgIGlmIChoYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptc3BhY2VUYWcpKQotICAgICAg
ICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MU3BhY2U+KCp0aGlzLCBXVEZNb3Zl
KHN0eWxlKSk7CiAgICAgaWYgKGhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6OmFubm90YXRpb25UYWcp
KQogICAgICAgICByZXR1cm4gTWF0aE1MRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFdU
Rk1vdmUoc3R5bGUpLCBpbnNlcnRpb25Qb3NpdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9tYXRodGFncy5pbiBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9tYXRodGFn
cy5pbgppbmRleCAzZTUzMDU2Li40NGRjODI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvbWF0aHRhZ3MuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL21hdGh0YWdzLmlu
CkBAIC0yNSw3ICsyNSw3IEBAIG1uIGludGVyZmFjZU5hbWU9TWF0aE1MVGV4dEVsZW1lbnQKIG1v
IGludGVyZmFjZU5hbWU9TWF0aE1MVGV4dEVsZW1lbnQKIG10ZXh0IGludGVyZmFjZU5hbWU9TWF0
aE1MVGV4dEVsZW1lbnQKIG1zIGludGVyZmFjZU5hbWU9TWF0aE1MVGV4dEVsZW1lbnQKLW1zcGFj
ZSBpbnRlcmZhY2VOYW1lPU1hdGhNTFRleHRFbGVtZW50Cittc3BhY2UgaW50ZXJmYWNlTmFtZT1N
YXRoTUxTcGFjZUVsZW1lbnQKIG1zdWIgaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWlu
ZXJFbGVtZW50CiBtc3VwIGludGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVu
dAogbXRhYmxlIGludGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNl
LmNwcAppbmRleCAwYzk3NzA0Li41ZWY4MTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcApAQCAtMzYsMTEgKzM2LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CiAK
LVJlbmRlck1hdGhNTFNwYWNlOjpSZW5kZXJNYXRoTUxTcGFjZShNYXRoTUxUZXh0RWxlbWVudCYg
ZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKK1JlbmRlck1hdGhNTFNwYWNlOjpSZW5kZXJN
YXRoTUxTcGFjZShNYXRoTUxTcGFjZUVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5
bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxCbG9jayhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKLSAg
ICAsIG1fd2lkdGgoMCkKLSAgICAsIG1faGVpZ2h0KDApCi0gICAgLCBtX2RlcHRoKDApCiB7CiB9
CiAKQEAgLTQ4LDM0ICs0NSwyOSBAQCB2b2lkIFJlbmRlck1hdGhNTFNwYWNlOjpjb21wdXRlUHJl
ZmVycmVkTG9naWNhbFdpZHRocygpCiB7CiAgICAgQVNTRVJUKHByZWZlcnJlZExvZ2ljYWxXaWR0
aHNEaXJ0eSgpKTsKIAotICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0gbV9tYXhQcmVm
ZXJyZWRMb2dpY2FsV2lkdGggPSBtX3dpZHRoOworICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdp
ZHRoID0gbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBzcGFjZVdpZHRoKCk7CiAKICAgICBz
ZXRQcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkoZmFsc2UpOwogfQogCi12b2lkIFJlbmRlck1h
dGhNTFNwYWNlOjp1cGRhdGVGcm9tRWxlbWVudCgpCitMYXlvdXRVbml0IFJlbmRlck1hdGhNTFNw
YWNlOjpzcGFjZVdpZHRoKCkgY29uc3QKIHsKLSAgICBjb25zdCBhdXRvJiBzcGFjZUVsZW1lbnQg
PSBlbGVtZW50KCk7Ci0KLSAgICAvLyBUaGlzIHBhcnNlcyB0aGUgbXNwYWNlIGF0dHJpYnV0ZXMs
IHVzaW5nIDAgYXMgdGhlIGRlZmF1bHQgdmFsdWVzLgotICAgIG1fd2lkdGggPSAwOwotICAgIG1f
aGVpZ2h0ID0gMDsKLSAgICBtX2RlcHRoID0gMDsKLSAgICBwYXJzZU1hdGhNTExlbmd0aChzcGFj
ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjp3aWR0aEF0dHIpLCBtX3dpZHRoLCAm
c3R5bGUoKSk7Ci0gICAgcGFyc2VNYXRoTUxMZW5ndGgoc3BhY2VFbGVtZW50LmdldEF0dHJpYnV0
ZShNYXRoTUxOYW1lczo6aGVpZ2h0QXR0ciksIG1faGVpZ2h0LCAmc3R5bGUoKSk7Ci0gICAgcGFy
c2VNYXRoTUxMZW5ndGgoc3BhY2VFbGVtZW50LmdldEF0dHJpYnV0ZShNYXRoTUxOYW1lczo6ZGVw
dGhBdHRyKSwgbV9kZXB0aCwgJnN0eWxlKCkpOworICAgIGF1dG8mIHNwYWNlRWxlbWVudCA9IGVs
ZW1lbnQoKTsKKyAgICAvLyBGSVhNRTogTmVnYXRpdmUgd2lkdGggdmFsdWVzIGFyZSBub3Qgc3Vw
cG9ydGVkIHlldC4KKyAgICByZXR1cm4gc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgdG9Vc2VyVW5p
dHMoc3BhY2VFbGVtZW50LndpZHRoKCksIHN0eWxlKCksIDApKTsKK30KIAotICAgIC8vIEZJWE1F
OiBOZWdhdGl2ZSB3aWR0aCB2YWx1ZXMgc2hvdWxkIGJlIGFjY2VwdGVkLgotICAgIGlmIChtX3dp
ZHRoIDwgMCkKLSAgICAgICAgbV93aWR0aCA9IDA7Cit2b2lkIFJlbmRlck1hdGhNTFNwYWNlOjpn
ZXRTcGFjZUhlaWdodEFuZERlcHRoKExheW91dFVuaXQmIGhlaWdodCwgTGF5b3V0VW5pdCYgZGVw
dGgpIGNvbnN0Cit7CisgICAgYXV0byYgc3BhY2VFbGVtZW50ID0gZWxlbWVudCgpOworICAgIGhl
aWdodCA9IHRvVXNlclVuaXRzKHNwYWNlRWxlbWVudC5oZWlnaHQoKSwgc3R5bGUoKSwgMCk7Cisg
ICAgZGVwdGggPSB0b1VzZXJVbml0cyhzcGFjZUVsZW1lbnQuZGVwdGgoKSwgc3R5bGUoKSwgMCk7
CiAKICAgICAvLyBJZiB0aGUgdG90YWwgaGVpZ2h0IGlzIG5lZ2F0aXZlLCBzZXQgdmVydGljYWwg
ZGltZW5zaW9ucyB0byAwLgotICAgIGlmIChtX2hlaWdodCArIG1fZGVwdGggPCAwKSB7Ci0gICAg
ICAgIG1faGVpZ2h0ID0gMDsKLSAgICAgICAgbV9kZXB0aCA9IDA7CisgICAgaWYgKGhlaWdodCAr
IGRlcHRoIDwgMCkgeworICAgICAgICBoZWlnaHQgPSAwOworICAgICAgICBkZXB0aCA9IDA7CiAg
ICAgfQotCi0gICAgc2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CiB9CiAKIHZv
aWQgUmVuZGVyTWF0aE1MU3BhY2U6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwg
TGF5b3V0VW5pdCkKQEAgLTg1LDIxICs3NywxOSBAQCB2b2lkIFJlbmRlck1hdGhNTFNwYWNlOjps
YXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQpCiAgICAgaWYgKCFy
ZWxheW91dENoaWxkcmVuICYmIHNpbXBsaWZpZWRMYXlvdXQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgc2V0TG9naWNhbFdpZHRoKG1fd2lkdGgpOwotICAgIHNldExvZ2ljYWxIZWlnaHQobV9o
ZWlnaHQgKyBtX2RlcHRoKTsKKyAgICBzZXRMb2dpY2FsV2lkdGgoc3BhY2VXaWR0aCgpKTsKKyAg
ICBMYXlvdXRVbml0IGhlaWdodCwgZGVwdGg7CisgICAgZ2V0U3BhY2VIZWlnaHRBbmREZXB0aCho
ZWlnaHQsIGRlcHRoKTsKKyAgICBzZXRMb2dpY2FsSGVpZ2h0KGhlaWdodCArIGRlcHRoKTsKIAog
ICAgIGNsZWFyTmVlZHNMYXlvdXQoKTsKIH0KIAotdm9pZCBSZW5kZXJNYXRoTUxTcGFjZTo6c3R5
bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRT
dHlsZSkKLXsKLSAgICBSZW5kZXJNYXRoTUxCbG9jazo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xk
U3R5bGUpOwotICAgIHVwZGF0ZUZyb21FbGVtZW50KCk7Ci19Ci0KIE9wdGlvbmFsPGludD4gUmVu
ZGVyTWF0aE1MU3BhY2U6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
T3B0aW9uYWw8aW50PihtX2hlaWdodCk7CisgICAgTGF5b3V0VW5pdCBoZWlnaHQsIGRlcHRoOwor
ICAgIGdldFNwYWNlSGVpZ2h0QW5kRGVwdGgoaGVpZ2h0LCBkZXB0aCk7CisgICAgcmV0dXJuIE9w
dGlvbmFsPGludD4oaGVpZ2h0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oCmluZGV4IGFkYmU5ODMuLmZmZDQ5N2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
U3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFNwYWNlLmgKQEAgLTI4LDI5ICsyOCwyNiBAQAogCiAjaWYgRU5BQkxFKE1BVEhNTCkKIAotI2lu
Y2x1ZGUgIk1hdGhNTFRleHRFbGVtZW50LmgiCisjaW5jbHVkZSAiTWF0aE1MU3BhY2VFbGVtZW50
LmgiCiAjaW5jbHVkZSAiUmVuZGVyTWF0aE1MQmxvY2suaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBSZW5kZXJNYXRoTUxTcGFjZSBmaW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxC
bG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MU3BhY2UoTWF0aE1MVGV4dEVsZW1lbnQm
LCBSZW5kZXJTdHlsZSYmKTsKLSAgICBNYXRoTUxUZXh0RWxlbWVudCYgZWxlbWVudCgpIHsgcmV0
dXJuIHN0YXRpY19jYXN0PE1hdGhNTFRleHRFbGVtZW50Jj4obm9kZUZvck5vbkFub255bW91cygp
KTsgfQorICAgIFJlbmRlck1hdGhNTFNwYWNlKE1hdGhNTFNwYWNlRWxlbWVudCYsIFJlbmRlclN0
eWxlJiYpOworICAgIE1hdGhNTFNwYWNlRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PE1hdGhNTFNwYWNlRWxlbWVudCY+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7
IH0KIAogcHJpdmF0ZToKICAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gIlJlbmRlck1hdGhNTFNwYWNlIjsgfQogICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxT
cGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHN0eWxlRGlkQ2hh
bmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBmaW5hbDsK
ICAgICBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRl
clN0eWxlJikgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2b2lkIHVwZGF0ZUZy
b21FbGVtZW50KCkgZmluYWw7CiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRo
cygpIGZpbmFsOwogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBM
YXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMCkgZmluYWw7CiAgICAgT3B0aW9uYWw8aW50
PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwogCi0gICAgTGF5b3V0VW5pdCBtX3dp
ZHRoOwotICAgIExheW91dFVuaXQgbV9oZWlnaHQ7Ci0gICAgTGF5b3V0VW5pdCBtX2RlcHRoOwor
ICAgIExheW91dFVuaXQgc3BhY2VXaWR0aCgpIGNvbnN0OworICAgIHZvaWQgZ2V0U3BhY2VIZWln
aHRBbmREZXB0aChMYXlvdXRVbml0JiBoZWlnaHQsIExheW91dFVuaXQmIGRlcHRoKSBjb25zdDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLS0gCjIuOC4xCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>