<?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>111924</bug_id>
          
          <creation_ts>2013-03-09 11:59:17 -0800</creation_ts>
          <short_desc>Enable platform code to implement text track menu</short_desc>
          <delta_ts>2013-03-09 13:31:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>jer.noble</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>851808</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-03-09 11:59:17 -0800</bug_when>
    <thetext>Make it possible for a port to implement the text track menu in platform code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851809</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-03-09 11:59:34 -0800</bug_when>
    <thetext>&lt;rdar://problem/13386009&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851811</commentid>
    <comment_count>2</comment_count>
      <attachid>192348</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-03-09 12:28:18 -0800</bug_when>
    <thetext>Created attachment 192348
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851812</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-09 12:30:48 -0800</bug_when>
    <thetext>Attachment 192348 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/html/HTMLAudioElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.h&apos;, u&apos;Source/WebCore/html/track/InbandTextTrack.h&apos;, u&apos;Source/WebCore/html/track/TextTrack.cpp&apos;, u&apos;Source/WebCore/html/track/TextTrack.h&apos;, u&apos;Source/WebCore/platform/graphics/MediaPlayer.cpp&apos;, u&apos;Source/WebCore/platform/graphics/MediaPlayer.h&apos;, u&apos;Source/WebCore/platform/graphics/MediaPlayerPrivate.h&apos;, u&apos;Source/WebCore/platform/graphics/PlatformTextTrack.h&apos;, u&apos;Source/WebCore/platform/graphics/PlatformTextTrackMenu.h&apos;]&quot; exit_code: 1
Source/WebCore/platform/graphics/PlatformTextTrackMenu.h:59:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851817</commentid>
    <comment_count>4</comment_count>
      <attachid>192350</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-03-09 13:03:48 -0800</bug_when>
    <thetext>Created attachment 192350
Updated patch, removed the offensive space.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851822</commentid>
    <comment_count>5</comment_count>
      <attachid>192350</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-09 13:31:22 -0800</bug_when>
    <thetext>Comment on attachment 192350
Updated patch, removed the offensive space.

Clearing flags on attachment: 192350

Committed r145322: &lt;http://trac.webkit.org/changeset/145322&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851823</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-09 13:31:25 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192348</attachid>
            <date>2013-03-09 12:28:18 -0800</date>
            <delta_ts>2013-03-09 13:03:48 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch_4.txt</filename>
            <type>text/plain</type>
            <size>35853</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTMyMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY0IEBACisyMDEzLTAzLTA5ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSBwbGF0Zm9y
bSBjb2RlIHRvIGltcGxlbWVudCB0ZXh0IHRyYWNrIG1lbnUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTkyNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhlIG5ldyBjb2RlIGlz
bid0IGVuYWJsZWQgaW4gYW55IHBvcnRzIHlldC4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogQWRkIFBsYXRmb3JtVGV4dFRyYWNrLmggYW5kIFBsYXRmb3Jt
VGV4dFRyYWNrTWVudS5oLgorCisgICAgICAgICogaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0ZUZvckpTQ29uc3RydWN0
b3IpOiBzY2hlZHVsZUxvYWQgLT4gc2NoZWR1bGVEZWxheWVkQWN0aW9uLgorCisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQpOiBEZWFsIHdpdGggc2NoZWR1bGVMb2FkIHRvIHNjaGVk
dWxlRGVsYXllZEFjdGlvbiByZW5hbWUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjppbnNlcnRlZEludG8pOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRGVsYXllZEFjdGlvbik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVOZXh0U291cmNlQ2hpbGQp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRUaW1lckZp
cmVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJh
Y2tNb2RlQ2hhbmdlZCk6IE5vdGlmeSBwbGF0Zm9ybSBtZW51IG9mIHRyYWNrIGNoYW5nZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXlJbnRlcm5hbCk6IERlYWwgd2l0
aCBzY2hlZHVsZUxvYWQgdG8gc2NoZWR1bGVEZWxheWVkQWN0aW9uIHJlbmFtZS4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlSW50ZXJuYWwpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkVHJhY2spOiBE
aXR0by4gQ2FsbCBhZGRUcmFjaygpIGluc3RlYWQgb2YgYXBwZW5kaW5nIAorICAgICAgICAgICAg
dGhlIHRyYWNrIGRpcmVjdGx5LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
c2V0U2VsZWN0ZWRUZXh0VHJhY2spOiBEZWFsIHdpdGggcGxhdGZvcm0gbWVudSBjaGFuZ2luZyB0
aGUKKyAgICAgICAgICAgIHNlbGVjdGVkIHRyYWNrLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cGxhdGZvcm1UZXh0VHJhY2tzKTogUmV0dXJuIGFuIGFycmF5IG9mIFBsYXRm
b3JtVHJhY2tzIHJlcHJlc2VudGluZworICAgICAgICAgICAgdGhlIGN1cnJlbnQgdGV4dCB0cmFj
a3MuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpub3RpZnlNZWRpYVBsYXll
ck9mVGV4dFRyYWNrQ2hhbmdlcyk6IE5vdGlmeSB0aGUgcGxhdGZvcm0gbWVudQorICAgICAgICAg
ICAgdGhhdCB0aGUgbGlzdCBvZiB0ZXh0IHRyYWNrcyBoYXMgY2hhbmdlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXRmb3JtVGV4dFRyYWNrTWVudSk6IFJldHVybiB0
aGUgcGxhdGZvcm0gdHJhY2sgbWVudSwgaWYgYW55LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6Y2xvc2VDYXB0aW9uVHJhY2tzQ2hhbmdlZCk6IAorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6YWRkVHJhY2spOiBDYWxsIGFkZFRyYWNrKCkgaW5zdGVhZCBv
ZiBhcHBlbmRpbmcgdGhlIHRyYWNrIGRpcmVjdGx5LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cmVtb3ZlVHJhY2spOiBDYWxsIGNsb3NlQ2FwdGlvblRyYWNrc0NoYW5nZWQu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJhY2spOiBDYWxs
IGFkZFRyYWNrKCkgaW5zdGVhZCBvZiBhcHBlbmRpbmcgdGhlIHRyYWNrIGRpcmVjdGx5LgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVHJhY2spOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlbW92ZVRyYWNrKTogRGVhbCB3
aXRoIHNjaGVkdWxlTG9hZCB0byBzY2hlZHVsZURlbGF5ZWRBY3Rpb24gcmVuYW1lLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c291cmNlV2FzQWRkZWQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFQbGF5ZXIpOiBGb3Jn
ZXQgdGhlIHBsYXRmb3JtIHRyYWNrIG1lbnUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpyZXN1bWUpOiBEZWFsIHdpdGggc2NoZWR1bGVMb2FkIHRvIHNjaGVkdWxlRGVsYXll
ZEFjdGlvbiByZW5hbWUuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisKKyAg
ICAgICAgKiBodG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oOiBzY2hlZHVsZUxvYWQgLT4gc2No
ZWR1bGVEZWxheWVkQWN0aW9uLgorCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpwbGF0Zm9ybVRleHRUcmFjayk6IENyZWF0
ZSBhIFBsYXRmb3JtVGV4dFRyYWNrLgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmg6
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6aW1wbGVtZW50c1RleHRUcmFja0NvbnRyb2xzKTogTmV3
LCBwbGF5ZXIgcHJpdmF0ZSBwYXNzdGhyb3VnaC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjp0ZXh0VHJhY2tNZW51KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclBy
aXZhdGUuaDoKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNr
Lmg6IEFkZGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJh
Y2tNZW51Lmg6IEFkZGVkLgorCiAyMDEzLTAzLTA5ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxz
b25AYXBwbGUuY29tPgogCiAgICAgICAgIFZpZGVvIHNpemUgY2FsY3VsYXRlZCBpbmNvcnJlY3Rs
eSB3aGVuIFBMVUdJTl9QUk9YWV9GT1JfVklERU8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE0NTI5NykKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNzQwNSw2ICs3NDA1LDggQEAKIAkJMDcyMEIwOUYxNEQzMzIzNTAwNjQyOTU1
IC8qIEdlbmVyaWNFdmVudFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdlbmVyaWNFdmVudFF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MjBC
MDlGMTREMzMyMzUwMDY0Mjk1NiAvKiBHZXN0dXJlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gR2VzdHVyZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDcyMEIwOUYxNEQzMzIzNTAwNjQyOTU3IC8qIEdlc3R1cmVFdmVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZXN0dXJlRXZlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcyODQ3RTIxNkVCQzVCMDAwNDNDRkE0IC8qIFBsYXRmb3Jt
VGV4dFRyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtVGV4dFRyYWNrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3Mjg0N0UzMTZFQkM1QjAwMDQzQ0ZBNCAvKiBQbGF0Zm9y
bVRleHRUcmFja01lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1UZXh0VHJhY2tNZW51Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MkNBODYwMTZDQjREQzMwMDhBRTEzMSAv
KiBDYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwNzM1RUU2OTBGNDBDNUU0MDA0QTI2MDQgLyogTWVkaWFQbGF5ZXJQcm94eS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByb3h5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NTM4NjAwMTQ0ODlFOTgwMEI3ODQ1MiAvKiBD
YWNoZWRUZXh0VHJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q2FjaGVkVGV4dFRyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNzk1
LDYgKzIwNzk3LDggQEAKIAkJCQlBOEZBNkU1QzBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5j
cHAgKi8sCiAJCQkJQThGQTZFNUIwRTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uaCAqLywKIAkJ
CQkwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1MYXllci5oICovLAorCQkJCTA3
Mjg0N0UyMTZFQkM1QjAwMDQzQ0ZBNCAvKiBQbGF0Zm9ybVRleHRUcmFjay5oICovLAorCQkJCTA3
Mjg0N0UzMTZFQkM1QjAwMDQzQ0ZBNCAvKiBQbGF0Zm9ybVRleHRUcmFja01lbnUuaCAqLywKIAkJ
CQlCQ0FCNDE3RjEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmNwcCAqLywKIAkJCQlCQ0FCNDE4
MDEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggKi8sCiAJCQkJQTczRjk1RkMxMkM5N0JGRTAw
MzFBQUY5IC8qIFJvdW5kZWRSZWN0LmNwcCAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEF1ZGlvRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXVkaW9FbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1Mjk3KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTUzLDcgKzUyLDcgQEAgUGFzc1JlZlB0cjxIVE1MQXVkaW9FbGVtZW50PiBIVE1MQXVk
aW9FbAogICAgIGF1ZGlvLT5zZXRQcmVsb2FkKCJhdXRvIik7CiAgICAgaWYgKCFzcmMuaXNOdWxs
KCkpIHsKICAgICAgICAgYXVkaW8tPnNldFNyYyhzcmMpOwotICAgICAgICBhdWRpby0+c2NoZWR1
bGVMb2FkKEhUTUxNZWRpYUVsZW1lbnQ6Ok1lZGlhUmVzb3VyY2UpOworICAgICAgICBhdWRpby0+
c2NoZWR1bGVEZWxheWVkQWN0aW9uKEhUTUxNZWRpYUVsZW1lbnQ6OkxvYWRNZWRpYVJlc291cmNl
KTsKICAgICB9CiAgICAgYXVkaW8tPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiBhdWRp
by5yZWxlYXNlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAJKHJldmlzaW9uIDE0NTI5NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwg
MjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEyOSw2ICsxMjksMTAgQEAKICNpbmNsdWRlICJN
ZWRpYUtleXMuaCIKICNlbmRpZgogCisjaWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkK
KyNpbmNsdWRlICJQbGF0Zm9ybVRleHRUcmFjay5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTI2MSw3ICsyNjUsNyBAQCBIVE1MTWVk
aWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0CiAgICAgLCBtX21pbmltdW1XYWxsQ2xv
Y2tUaW1lVG9DYWNoZU1lZGlhVGltZSgwKQogICAgICwgbV9mcmFnbWVudFN0YXJ0VGltZShNZWRp
YVBsYXllcjo6aW52YWxpZFRpbWUoKSkKICAgICAsIG1fZnJhZ21lbnRFbmRUaW1lKE1lZGlhUGxh
eWVyOjppbnZhbGlkVGltZSgpKQotICAgICwgbV9wZW5kaW5nTG9hZEZsYWdzKDApCisgICAgLCBt
X3BlbmRpbmdBY3Rpb25GbGFncygwKQogICAgICwgbV9wbGF5aW5nKGZhbHNlKQogICAgICwgbV9p
c1dhaXRpbmdVbnRpbE1lZGlhQ2FuU3RhcnQoZmFsc2UpCiAgICAgLCBtX3Nob3VsZERlbGF5TG9h
ZEV2ZW50KGZhbHNlKQpAQCAtMzk5LDggKzQwMyw4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY28KICAgICBpZiAobmFtZSA9PSBzcmNBdHRyKSB7CiAgICAgICAgIC8v
IFRyaWdnZXIgYSByZWxvYWQsIGFzIGxvbmcgYXMgdGhlICdzcmMnIGF0dHJpYnV0ZSBpcyBwcmVz
ZW50LgogICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBjbGVhck1l
ZGlhUGxheWVyKE1lZGlhUmVzb3VyY2UpOwotICAgICAgICAgICAgc2NoZWR1bGVMb2FkKE1lZGlh
UmVzb3VyY2UpOworICAgICAgICAgICAgY2xlYXJNZWRpYVBsYXllcihMb2FkTWVkaWFSZXNvdXJj
ZSk7CisgICAgICAgICAgICBzY2hlZHVsZURlbGF5ZWRBY3Rpb24oTG9hZE1lZGlhUmVzb3VyY2Up
OwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChuYW1lID09IGNvbnRyb2xzQXR0cikKICAgICAg
ICAgY29uZmlndXJlTWVkaWFDb250cm9scygpOwpAQCAtNDk1LDcgKzQ5OSw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWwKICAgICAKICAgICBmb3IgKE5vZGUqIG5v
ZGUgPSBmaXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7CiAg
ICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkgewotICAgICAgICAgICAgc2No
ZWR1bGVMb2FkKFRleHRUcmFja1Jlc291cmNlKTsKKyAgICAgICAgICAgIHNjaGVkdWxlRGVsYXll
ZEFjdGlvbihMb2FkVGV4dFRyYWNrUmVzb3VyY2UpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICB9CkBAIC01NTAsNyArNTU0LDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0
aW9uUmVxdWVzdCBIVE1MTQogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Omluc2Vy
dGVkSW50byIpOwogICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZEludG8oaW5zZXJ0aW9uUG9pbnQp
OwogICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpICYmICFnZXRBdHRyaWJ1dGUo
c3JjQXR0cikuaXNFbXB0eSgpICYmIG1fbmV0d29ya1N0YXRlID09IE5FVFdPUktfRU1QVFkpCi0g
ICAgICAgIHNjaGVkdWxlTG9hZChNZWRpYVJlc291cmNlKTsKKyAgICAgICAgc2NoZWR1bGVEZWxh
eWVkQWN0aW9uKExvYWRNZWRpYVJlc291cmNlKTsKICAgICBjb25maWd1cmVNZWRpYUNvbnRyb2xz
KCk7CiAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7CiB9CkBAIC02MDksMjIgKzYxMywyNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlY2FsY1N0eWxlKFN0CiAgICAgICAgIHJlbmRlcmVy
KCktPnVwZGF0ZUZyb21FbGVtZW50KCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2No
ZWR1bGVMb2FkKExvYWRUeXBlIGxvYWRUeXBlKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hl
ZHVsZURlbGF5ZWRBY3Rpb24oRGVsYXllZEFjdGlvblR5cGUgYWN0aW9uVHlwZSkKIHsKICAgICBM
T0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUxvYWQiKTsKIAotICAgIGlmICgo
bG9hZFR5cGUgJiBNZWRpYVJlc291cmNlKSAmJiAhKG1fcGVuZGluZ0xvYWRGbGFncyAmIE1lZGlh
UmVzb3VyY2UpKSB7CisgICAgaWYgKChhY3Rpb25UeXBlICYgTG9hZE1lZGlhUmVzb3VyY2UpICYm
ICEobV9wZW5kaW5nQWN0aW9uRmxhZ3MgJiBMb2FkTWVkaWFSZXNvdXJjZSkpIHsKICNpZiBFTkFC
TEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKICAgICAgICAgY3JlYXRlTWVkaWFQbGF5ZXJQcm94
eSgpOwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBwcmVwYXJlRm9yTG9hZCgpOwotICAgICAg
ICBtX3BlbmRpbmdMb2FkRmxhZ3MgfD0gTWVkaWFSZXNvdXJjZTsKKyAgICAgICAgbV9wZW5kaW5n
QWN0aW9uRmxhZ3MgfD0gTG9hZE1lZGlhUmVzb3VyY2U7CiAgICAgfQogCiAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1Ry
YWNrRW5hYmxlZCgpICYmIChsb2FkVHlwZSAmIFRleHRUcmFja1Jlc291cmNlKSkKLSAgICAgICAg
bV9wZW5kaW5nTG9hZEZsYWdzIHw9IFRleHRUcmFja1Jlc291cmNlOworICAgIGlmIChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpICYmIChhY3Rpb25UeXBl
ICYgTG9hZFRleHRUcmFja1Jlc291cmNlKSkKKyAgICAgICAgbV9wZW5kaW5nQWN0aW9uRmxhZ3Mg
fD0gTG9hZFRleHRUcmFja1Jlc291cmNlOworI2VuZGlmCisKKyNpZiBVU0UoUExBVEZPUk1fVEVY
VF9UUkFDS19NRU5VKQorICAgIGlmIChhY3Rpb25UeXBlICYgVGV4dFRyYWNrQ2hhbmdlc05vdGlm
aWNhdGlvbikKKyAgICAgICAgbV9wZW5kaW5nQWN0aW9uRmxhZ3MgfD0gVGV4dFRyYWNrQ2hhbmdl
c05vdGlmaWNhdGlvbjsKICNlbmRpZgogCiAgICAgaWYgKCFtX2xvYWRUaW1lci5pc0FjdGl2ZSgp
KQpAQCAtNjM0LDcgKzY0Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVMb2Fk
KExvYWQKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVOZXh0U291cmNlQ2hpbGQoKQog
ewogICAgIC8vIFNjaGVkdWxlIHRoZSB0aW1lciB0byB0cnkgdGhlIG5leHQgPHNvdXJjZT4gZWxl
bWVudCBXSVRIT1VUIHJlc2V0dGluZyBzdGF0ZSBhbGEgcHJlcGFyZUZvckxvYWQuCi0gICAgbV9w
ZW5kaW5nTG9hZEZsYWdzIHw9IE1lZGlhUmVzb3VyY2U7CisgICAgbV9wZW5kaW5nQWN0aW9uRmxh
Z3MgfD0gTG9hZE1lZGlhUmVzb3VyY2U7CiAgICAgbV9sb2FkVGltZXIuc3RhcnRPbmVTaG90KDAp
OwogfQogCkBAIC02NTQsMTggKzY2MywyMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRU
aW1lckZpcmVkKFRpCiAgICAgUmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3QodGhpcyk7
IC8vIGxvYWROZXh0U291cmNlQ2hpbGQgbWF5IGZpcmUgJ2JlZm9yZWxvYWQnLCB3aGljaCBjYW4g
bWFrZSBhcmJpdHJhcnkgRE9NIG11dGF0aW9ucy4KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykK
LSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQo
KSAmJiAobV9wZW5kaW5nTG9hZEZsYWdzICYgVGV4dFRyYWNrUmVzb3VyY2UpKQorICAgIGlmIChS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpICYmIChtX3Bl
bmRpbmdBY3Rpb25GbGFncyAmIExvYWRUZXh0VHJhY2tSZXNvdXJjZSkpCiAgICAgICAgIGNvbmZp
Z3VyZVRleHRUcmFja3MoKTsKICNlbmRpZgogCi0gICAgaWYgKG1fcGVuZGluZ0xvYWRGbGFncyAm
IE1lZGlhUmVzb3VyY2UpIHsKKyAgICBpZiAobV9wZW5kaW5nQWN0aW9uRmxhZ3MgJiBMb2FkTWVk
aWFSZXNvdXJjZSkgewogICAgICAgICBpZiAobV9sb2FkU3RhdGUgPT0gTG9hZGluZ0Zyb21Tb3Vy
Y2VFbGVtZW50KQogICAgICAgICAgICAgbG9hZE5leHRTb3VyY2VDaGlsZCgpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBsb2FkSW50ZXJuYWwoKTsKICAgICB9CiAKLSAgICBtX3BlbmRpbmdM
b2FkRmxhZ3MgPSAwOworI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCisgICAgaWYg
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkgJiYgKG1f
cGVuZGluZ0FjdGlvbkZsYWdzICYgVGV4dFRyYWNrQ2hhbmdlc05vdGlmaWNhdGlvbikpCisgICAg
ICAgIG5vdGlmeU1lZGlhUGxheWVyT2ZUZXh0VHJhY2tDaGFuZ2VzKCk7CisjZW5kaWYKKworICAg
IG1fcGVuZGluZ0FjdGlvbkZsYWdzID0gMDsKIH0KIAogUGFzc1JlZlB0cjxNZWRpYUVycm9yPiBI
VE1MTWVkaWFFbGVtZW50OjplcnJvcigpIGNvbnN0IApAQCAtMTM4NSw2ICsxMzk5LDExIEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW4KICAgICAgICAgfQogICAgIH0K
IAorI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCisgICAgaWYgKHBsYXRmb3JtVGV4
dFRyYWNrTWVudSgpKQorICAgICAgICBwbGF0Zm9ybVRleHRUcmFja01lbnUoKS0+dHJhY2tXYXNT
ZWxlY3RlZCh0cmFjay0+cGxhdGZvcm1UZXh0VHJhY2soKSk7CisjZW5kaWYKKyAgICAKICAgICBj
b25maWd1cmVUZXh0VHJhY2tEaXNwbGF5KCk7CiAgICAgdXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3Vl
cyhjdXJyZW50VGltZSgpKTsKIH0KQEAgLTI0MjIsNyArMjQ0MSw3IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6cGxheUludGVybmFsKCkKIAogICAgIC8vIDQuOC4xMC45LiBQbGF5aW5nIHRoZSBt
ZWRpYSByZXNvdXJjZQogICAgIGlmICghbV9wbGF5ZXIgfHwgbV9uZXR3b3JrU3RhdGUgPT0gTkVU
V09SS19FTVBUWSkKLSAgICAgICAgc2NoZWR1bGVMb2FkKE1lZGlhUmVzb3VyY2UpOworICAgICAg
ICBzY2hlZHVsZURlbGF5ZWRBY3Rpb24oTG9hZE1lZGlhUmVzb3VyY2UpOwogCiAgICAgaWYgKGVu
ZGVkUGxheWJhY2soKSkKICAgICAgICAgc2VlaygwLCBJR05PUkVfRVhDRVBUSU9OKTsKQEAgLTI0
NjMsNyArMjQ4Miw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGF1c2VJbnRlcm5hbCgpCiAK
ICAgICAvLyA0LjguMTAuOS4gUGxheWluZyB0aGUgbWVkaWEgcmVzb3VyY2UKICAgICBpZiAoIW1f
cGxheWVyIHx8IG1fbmV0d29ya1N0YXRlID09IE5FVFdPUktfRU1QVFkpCi0gICAgICAgIHNjaGVk
dWxlTG9hZChNZWRpYVJlc291cmNlKTsKKyAgICAgICAgc2NoZWR1bGVEZWxheWVkQWN0aW9uKExv
YWRNZWRpYVJlc291cmNlKTsKIAogICAgIG1fYXV0b3BsYXlpbmcgPSBmYWxzZTsKIApAQCAtMjgx
OSwxMyArMjgzOCwxMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRk
CiAgICAgLy8gNy4gU2V0IHRoZSBuZXcgdGV4dCB0cmFjaydzIG1vZGUgdG8gdGhlIG1vZGUgY29u
c2lzdGVudCB3aXRoIHRoZSB1c2VyJ3MgcHJlZmVyZW5jZXMgYW5kIHRoZSByZXF1aXJlbWVudHMg
b2YKICAgICAvLyB0aGUgcmVsZXZhbnQgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIGRhdGEuCiAgICAg
Ly8gIC0gVGhpcyB3aWxsIGhhcHBlbiBpbiBjb25maWd1cmVUZXh0VHJhY2tzKCkKLSAgICBzY2hl
ZHVsZUxvYWQoVGV4dFRyYWNrUmVzb3VyY2UpOworICAgIHNjaGVkdWxlRGVsYXllZEFjdGlvbihM
b2FkVGV4dFRyYWNrUmVzb3VyY2UpOwogICAgIAogICAgIC8vIDguIEFkZCB0aGUgbmV3IHRleHQg
dHJhY2sgdG8gdGhlIG1lZGlhIGVsZW1lbnQncyBsaXN0IG9mIHRleHQgdHJhY2tzLgogICAgIC8v
IDkuIEZpcmUgYW4gZXZlbnQgd2l0aCB0aGUgbmFtZSBhZGR0cmFjaywgdGhhdCBkb2VzIG5vdCBi
dWJibGUgYW5kIGlzIG5vdCBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50
CiAgICAgLy8gaW50ZXJmYWNlLCB3aXRoIHRoZSB0cmFjayBhdHRyaWJ1dGUgaW5pdGlhbGl6ZWQg
dG8gdGhlIHRleHQgdHJhY2sncyBUZXh0VHJhY2sgb2JqZWN0LCBhdCB0aGUgbWVkaWEgZWxlbWVu
dCdzCiAgICAgLy8gdGV4dFRyYWNrcyBhdHRyaWJ1dGUncyBUZXh0VHJhY2tMaXN0IG9iamVjdC4K
LSAgICB0ZXh0VHJhY2tzKCktPmFwcGVuZCh0ZXh0VHJhY2spOworICAgIGFkZFRyYWNrKHRleHRU
cmFjay5nZXQoKSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRS
ZW1vdmVUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IHBycFRyYWNrKQpA
QCAtMjg0NSw2ICsyODY0LDg5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJE
aWRSZW0KICAgICByZW1vdmVUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOwogfQogCisjaWYgVVNFKFBM
QVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2VsZWN0
ZWRUZXh0VHJhY2soUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gcGxhdGZvcm1UcmFjaykK
K3sKKyAgICBpZiAoIW1fdGV4dFRyYWNrcykKKyAgICAgICAgcmV0dXJuOworCisgICAgVHJhY2tE
aXNwbGF5VXBkYXRlU2NvcGUgc2NvcGUodGhpcyk7CisKKyAgICBpZiAoIXBsYXRmb3JtVHJhY2sp
IHsKKyAgICAgICAgdG9nZ2xlVHJhY2tBdEluZGV4KHRleHRUcmFja3NPZmZJbmRleCgpLCB0cnVl
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFRleHRUcmFjayogdGV4dFRyYWNrOwor
ICAgIHNpemVfdCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBtX3RleHRUcmFja3MtPmxlbmd0aCgp
OyArK2kpIHsKKyAgICAgICAgdGV4dFRyYWNrID0gbV90ZXh0VHJhY2tzLT5pdGVtKGkpOworICAg
ICAgICAKKyAgICAgICAgaWYgKHRleHRUcmFjay0+cGxhdGZvcm1UZXh0VHJhY2soKSA9PSBwbGF0
Zm9ybVRyYWNrKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKGkgPT0gbV90
ZXh0VHJhY2tzLT5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHRvZ2dsZVRyYWNrQXRJ
bmRleChpLCB0cnVlKTsKK30KKworVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gPiBI
VE1MTWVkaWFFbGVtZW50OjpwbGF0Zm9ybVRleHRUcmFja3MoKQoreworICAgIGlmICghbV90ZXh0
VHJhY2tzIHx8ICFtX3RleHRUcmFja3MtPmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gVmVjdG9y
PFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gPigpOworICAgIAorICAgIFZlY3RvcjxSZWZQdHI8
UGxhdGZvcm1UZXh0VHJhY2s+ID4gcGxhdGZvcm1UcmFja3M7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX3RleHRUcmFja3MtPmxlbmd0aCgpOyArK2kpCisgICAgICAgIHBsYXRmb3JtVHJh
Y2tzLmFwcGVuZChtX3RleHRUcmFja3MtPml0ZW0oaSktPnBsYXRmb3JtVGV4dFRyYWNrKCkpOwor
ICAgIAorICAgIHJldHVybiBwbGF0Zm9ybVRyYWNrczsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojpub3RpZnlNZWRpYVBsYXllck9mVGV4dFRyYWNrQ2hhbmdlcygpCit7CisgICAgaWYgKCFt
X3RleHRUcmFja3MgfHwgIW1fdGV4dFRyYWNrcy0+bGVuZ3RoKCkgfHwgIXBsYXRmb3JtVGV4dFRy
YWNrTWVudSgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9wbGF0Zm9ybU1lbnUtPnRy
YWNrc0RpZENoYW5nZSgpOworfQorCitQbGF0Zm9ybVRleHRUcmFja01lbnVJbnRlcmZhY2UqIEhU
TUxNZWRpYUVsZW1lbnQ6OnBsYXRmb3JtVGV4dFRyYWNrTWVudSgpCit7CisgICAgaWYgKG1fcGxh
dGZvcm1NZW51KQorICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybU1lbnUuZ2V0KCk7CisKKyAgICBp
ZiAoIW1fcGxheWVyLT5pbXBsZW1lbnRzVGV4dFRyYWNrQ29udHJvbHMoKSkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBtX3BsYXRmb3JtTWVudSA9IG1fcGxheWVyLT50ZXh0VHJhY2tNZW51KCk7
CisgICAgaWYgKCFtX3BsYXRmb3JtTWVudSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBtX3Bs
YXRmb3JtTWVudS0+c2V0Q2xpZW50KHRoaXMpOworCisgICAgcmV0dXJuIG1fcGxhdGZvcm1NZW51
LmdldCgpOworfQorI2VuZGlmIC8vICNpZiBVU0UoUExBVEZPUk1fVEVYVF9UUkFDS19NRU5VKQor
ICAgIAordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjbG9zZUNhcHRpb25UcmFja3NDaGFuZ2VkKCkK
K3sKKyAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQorICAgICAgICBtZWRpYUNvbnRyb2xzKCkt
PmNsb3NlZENhcHRpb25UcmFja3NDaGFuZ2VkKCk7CisKKyNpZiBVU0UoUExBVEZPUk1fVEVYVF9U
UkFDS19NRU5VKQorICAgIGlmIChtX3BsYXllci0+aW1wbGVtZW50c1RleHRUcmFja0NvbnRyb2xz
KCkpCisgICAgICAgIHNjaGVkdWxlRGVsYXllZEFjdGlvbihUZXh0VHJhY2tDaGFuZ2VzTm90aWZp
Y2F0aW9uKTsKKyNlbmRpZgorfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRyYWNrKFRl
eHRUcmFjayogdHJhY2spCit7CisgICAgdGV4dFRyYWNrcygpLT5hcHBlbmQodHJhY2spOworICAg
IAorICAgIGNsb3NlQ2FwdGlvblRyYWNrc0NoYW5nZWQoKTsKK30KKwogdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpyZW1vdmVUcmFjayhUZXh0VHJhY2sqIHRyYWNrKQogewogICAgIFRyYWNrRGlzcGxh
eVVwZGF0ZVNjb3BlIHNjb3BlKHRoaXMpOwpAQCAtMjg1Miw2ICsyOTU0LDggQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpyZW1vdmVUcmFjayhUZXh0VAogICAgIGlmIChjdWVzKQogICAgICAgICB0
ZXh0VHJhY2tSZW1vdmVDdWVzKHRyYWNrLCBjdWVzKTsKICAgICBtX3RleHRUcmFja3MtPnJlbW92
ZSh0cmFjayk7CisKKyAgICBjbG9zZUNhcHRpb25UcmFja3NDaGFuZ2VkKCk7CiB9CiAKIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQWxsSW5iYW5kVHJhY2tzKCkKQEAgLTI4OTQsNyArMjk5
OCw3IEBAIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBIVE1MTWVkaWFFbGVtZW50OjoKICAgICAvLyBm
aXJzdCBhcHBlbmQgdGhlIHRyYWNrIHRvIHRoZSB0ZXh0IHRyYWNrIGxpc3QuCiAKICAgICAvLyA2
LiBBZGQgdGhlIG5ldyB0ZXh0IHRyYWNrIHRvIHRoZSBtZWRpYSBlbGVtZW50J3MgbGlzdCBvZiB0
ZXh0IHRyYWNrcy4KLSAgICB0ZXh0VHJhY2tzKCktPmFwcGVuZCh0ZXh0VHJhY2spOworICAgIGFk
ZFRyYWNrKHRleHRUcmFjay5nZXQoKSk7CiAKICAgICAvLyAuLi4gaXRzIHRleHQgdHJhY2sgcmVh
ZGluZXNzIHN0YXRlIHRvIHRoZSB0ZXh0IHRyYWNrIGxvYWRlZCBzdGF0ZSAuLi4KICAgICB0ZXh0
VHJhY2stPnNldFJlYWRpbmVzc1N0YXRlKFRleHRUcmFjazo6TG9hZGVkKTsKQEAgLTI5MDIsOSAr
MzAwNiw2IEBAIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBIVE1MTWVkaWFFbGVtZW50OjoKICAgICAv
LyAuLi4gaXRzIHRleHQgdHJhY2sgbW9kZSB0byB0aGUgdGV4dCB0cmFjayBoaWRkZW4gbW9kZSwg
YW5kIGl0cyB0ZXh0IHRyYWNrIGxpc3Qgb2YgY3VlcyB0byBhbiBlbXB0eSBsaXN0IC4uLgogICAg
IHRleHRUcmFjay0+c2V0TW9kZShUZXh0VHJhY2s6OmhpZGRlbktleXdvcmQoKSk7CiAKLSAgICBp
ZiAoaGFzTWVkaWFDb250cm9scygpKQotICAgICAgICBtZWRpYUNvbnRyb2xzKCktPmNsb3NlZENh
cHRpb25UcmFja3NDaGFuZ2VkKCk7Ci0KICAgICByZXR1cm4gdGV4dFRyYWNrLnJlbGVhc2UoKTsK
IH0KIApAQCAtMjkzNCwxMiArMzAzNSwxMiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFk
ZFRyYWNrKEhUTUxUCiAgICAgaWYgKCF0ZXh0VHJhY2spCiAgICAgICAgIHJldHVybjsKICAgICAK
LSAgICB0ZXh0VHJhY2tzKCktPmFwcGVuZCh0ZXh0VHJhY2spOworICAgIGFkZFRyYWNrKHRleHRU
cmFjay5nZXQoKSk7CiAgICAgCiAgICAgLy8gRG8gbm90IHNjaGVkdWxlIHRoZSB0cmFjayBsb2Fk
aW5nIHVudGlsIHBhcnNpbmcgZmluaXNoZXMgc28gd2UgZG9uJ3Qgc3RhcnQgYmVmb3JlIGFsbCB0
cmFja3MKICAgICAvLyBpbiB0aGUgbWFya3VwIGhhdmUgYmVlbiBhZGRlZC4KICAgICBpZiAoIW1f
cGFyc2luZ0luUHJvZ3Jlc3MpCi0gICAgICAgIHNjaGVkdWxlTG9hZChUZXh0VHJhY2tSZXNvdXJj
ZSk7CisgICAgICAgIHNjaGVkdWxlRGVsYXllZEFjdGlvbihMb2FkVGV4dFRyYWNrUmVzb3VyY2Up
OwogCiAgICAgaWYgKGhhc01lZGlhQ29udHJvbHMoKSkKICAgICAgICAgbWVkaWFDb250cm9scygp
LT5jbG9zZWRDYXB0aW9uVHJhY2tzQ2hhbmdlZCgpOwpAQCAtMjk3NCw5ICszMDc1LDYgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRSZW1vdmVUcmFjayhIVAogICAgIC8vIG1lZGlhIGVsZW1l
bnQncyBsaXN0IG9mIHRleHQgdHJhY2tzLgogICAgIHJlbW92ZVRyYWNrKHRleHRUcmFjay5nZXQo
KSk7CiAKLSAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQotICAgICAgICBtZWRpYUNvbnRyb2xz
KCktPmNsb3NlZENhcHRpb25UcmFja3NDaGFuZ2VkKCk7Ci0KICAgICBzaXplX3QgaW5kZXggPSBt
X3RleHRUcmFja3NXaGVuUmVzb3VyY2VTZWxlY3Rpb25CZWdhbi5maW5kKHRleHRUcmFjay5nZXQo
KSk7CiAgICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kKQogICAgICAgICBtX3RleHRUcmFja3NXaGVu
UmVzb3VyY2VTZWxlY3Rpb25CZWdhbi5yZW1vdmUoaW5kZXgpOwpAQCAtMzMyNiw3ICszNDI0LDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpzb3VyY2VXYXNBZGRlZChIVAogICAgIC8vIGF0dHJp
YnV0ZSBhbmQgd2hvc2UgbmV0d29ya1N0YXRlIGhhcyB0aGUgdmFsdWUgTkVUV09SS19FTVBUWSwg
dGhlIHVzZXIgYWdlbnQgbXVzdCBpbnZva2UgCiAgICAgLy8gdGhlIG1lZGlhIGVsZW1lbnQncyBy
ZXNvdXJjZSBzZWxlY3Rpb24gYWxnb3JpdGhtLgogICAgIGlmIChuZXR3b3JrU3RhdGUoKSA9PSBI
VE1MTWVkaWFFbGVtZW50OjpORVRXT1JLX0VNUFRZKSB7Ci0gICAgICAgIHNjaGVkdWxlTG9hZChN
ZWRpYVJlc291cmNlKTsKKyAgICAgICAgc2NoZWR1bGVEZWxheWVkQWN0aW9uKExvYWRNZWRpYVJl
c291cmNlKTsKICAgICAgICAgbV9uZXh0Q2hpbGROb2RlVG9Db25zaWRlciA9IHNvdXJjZTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM4NjksNiArMzk2NywxMyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2FkCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xl
YXJNZWRpYVBsYXllcihpbnQgZmxhZ3MpCiB7CisjaWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tf
TUVOVSkKKyAgICBpZiAocGxhdGZvcm1UZXh0VHJhY2tNZW51KCkpIHsKKyAgICAgICAgbV9wbGF0
Zm9ybU1lbnUtPnNldENsaWVudCgwKTsKKyAgICAgICAgbV9wbGF0Zm9ybU1lbnUgPSAwOworICAg
IH0KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIHJlbW92ZUFsbEluYmFu
ZFRyYWNrcygpOwogI2VuZGlmCkBAIC0zODg0LDcgKzM5ODksNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OmNsZWFyTWVkaWFQbGF5ZXIoCiAgICAgc3RvcFBlcmlvZGljVGltZXJzKCk7CiAgICAg
bV9sb2FkVGltZXIuc3RvcCgpOwogCi0gICAgbV9wZW5kaW5nTG9hZEZsYWdzICY9IH5mbGFnczsK
KyAgICBtX3BlbmRpbmdBY3Rpb25GbGFncyAmPSB+ZmxhZ3M7CiAgICAgbV9sb2FkU3RhdGUgPSBX
YWl0aW5nRm9yU291cmNlOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQpAQCAtMzk0OCw3ICs0
MDUzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXN1bWUoKQogICAgICAgICAvLyAgTUVE
SUFfRVJSX0FCT1JURUQgd2hpbGUgdGhlIGFib3J0RXZlbnQgaXMgYmVpbmcgc2VudCwgYnV0IGNs
ZWFyZWQgaW1tZWRpYXRlbHkgYWZ0ZXJ3YXJkcykuCiAgICAgICAgIC8vIFRoaXMgYmVoYXZpb3Ig
aXMgbm90IHNwZWNpZmllZCBidXQgaXQgc2VlbXMgbGlrZSBhIHNlbnNpYmxlIHRoaW5nIHRvIGRv
LgogICAgICAgICAvLyBBcyBpdCBpcyBub3Qgc2FmZSB0byBpbW1lZGF0ZWx5IHN0YXJ0IGxvYWRp
bmcgbm93LCBsZXQncyBzY2hlZHVsZSBhIGxvYWQuCi0gICAgICAgIHNjaGVkdWxlTG9hZChNZWRp
YVJlc291cmNlKTsKKyAgICAgICAgc2NoZWR1bGVEZWxheWVkQWN0aW9uKExvYWRNZWRpYVJlc291
cmNlKTsKICAgICB9CiAKICAgICBpZiAocmVuZGVyZXIoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZpc2lvbiAxNDUyOTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAy
MDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODYsNiArODYsOSBA
QCBjbGFzcyBIVE1MTWVkaWFFbGVtZW50IDogcHVibGljIEhUTUxFbGVtCiAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQogICAgICwgcHJpdmF0ZSBUZXh0VHJhY2tDbGllbnQsIHByaXZhdGUgQ2FwdGlv
blByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyCiAjZW5kaWYKKyNpZiBVU0UoUExBVEZPUk1fVEVY
VF9UUkFDS19NRU5VKQorICAgICwgcHVibGljIFBsYXRmb3JtVGV4dFRyYWNrTWVudUNsaWVudAor
I2VuZGlmCiB7CiBwdWJsaWM6CiAgICAgTWVkaWFQbGF5ZXIqIHBsYXllcigpIGNvbnN0IHsgcmV0
dXJuIG1fcGxheWVyLmdldCgpOyB9CkBAIC0xMDgsMTEgKzExMSwxMiBAQCBwdWJsaWM6CiAgICAg
UGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwogI2VuZGlmCiAKLSAgICBlbnVt
IExvYWRUeXBlIHsKLSAgICAgICAgTWVkaWFSZXNvdXJjZSA9IDEgPDwgMCwKLSAgICAgICAgVGV4
dFRyYWNrUmVzb3VyY2UgPSAxIDw8IDEKKyAgICBlbnVtIERlbGF5ZWRBY3Rpb25UeXBlIHsKKyAg
ICAgICAgTG9hZE1lZGlhUmVzb3VyY2UgPSAxIDw8IDAsCisgICAgICAgIExvYWRUZXh0VHJhY2tS
ZXNvdXJjZSA9IDEgPDwgMSwKKyAgICAgICAgVGV4dFRyYWNrQ2hhbmdlc05vdGlmaWNhdGlvbiA9
IDEgPDwgMgogICAgIH07Ci0gICAgdm9pZCBzY2hlZHVsZUxvYWQoTG9hZFR5cGUpOworICAgIHZv
aWQgc2NoZWR1bGVEZWxheWVkQWN0aW9uKERlbGF5ZWRBY3Rpb25UeXBlKTsKICAgICAKICAgICBN
ZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBtb3ZpZUxvYWRUeXBlKCkgY29uc3Q7CiAgICAgCkBA
IC0yMjQsOCArMjI4LDExIEBAIHB1YmxpYzoKICAgICBUZXh0VHJhY2tMaXN0KiB0ZXh0VHJhY2tz
KCk7CiAgICAgQ3VlTGlzdCBjdXJyZW50bHlBY3RpdmVDdWVzKCkgY29uc3QgeyByZXR1cm4gbV9j
dXJyZW50bHlBY3RpdmVDdWVzOyB9CiAKKyAgICB2b2lkIGFkZFRyYWNrKFRleHRUcmFjayopOwog
ICAgIHZvaWQgcmVtb3ZlVHJhY2soVGV4dFRyYWNrKik7CiAgICAgdm9pZCByZW1vdmVBbGxJbmJh
bmRUcmFja3MoKTsKKyAgICB2b2lkIGNsb3NlQ2FwdGlvblRyYWNrc0NoYW5nZWQoKTsKKyAgICB2
b2lkIG5vdGlmeU1lZGlhUGxheWVyT2ZUZXh0VHJhY2tDaGFuZ2VzKCk7CiAKICAgICB2aXJ0dWFs
IHZvaWQgZGlkQWRkVHJhY2soSFRNTFRyYWNrRWxlbWVudCopOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZW1vdmVUcmFjayhIVE1MVHJhY2tFbGVtZW50Kik7CkBAIC0yMzMsNiArMjQwLDEyIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRBZGRUcmFjayhQYXNzUmVmUHRy
PEluYmFuZFRleHRUcmFja1ByaXZhdGU+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbWVk
aWFQbGF5ZXJEaWRSZW1vdmVUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+
KSBPVkVSUklERTsKIAorI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCisgICAgdmly
dHVhbCB2b2lkIHNldFNlbGVjdGVkVGV4dFRyYWNrKFBhc3NSZWZQdHI8UGxhdGZvcm1UZXh0VHJh
Y2s+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1UZXh0VHJh
Y2s+ID4gcGxhdGZvcm1UZXh0VHJhY2tzKCkgT1ZFUlJJREU7CisgICAgUGxhdGZvcm1UZXh0VHJh
Y2tNZW51SW50ZXJmYWNlKiBwbGF0Zm9ybVRleHRUcmFja01lbnUoKTsKKyNlbmRpZgorCiAgICAg
c3RydWN0IFRyYWNrR3JvdXAgewogICAgICAgICBlbnVtIEdyb3VwS2luZCB7IENhcHRpb25zQW5k
U3VidGl0bGVzLCBEZXNjcmlwdGlvbiwgQ2hhcHRlciwgTWV0YWRhdGEsIE90aGVyIH07CiAKQEAg
LTY0NCw4ICs2NTcsOCBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBtX2ZyYWdtZW50U3RhcnRUaW1l
OwogICAgIGRvdWJsZSBtX2ZyYWdtZW50RW5kVGltZTsKIAotICAgIHR5cGVkZWYgdW5zaWduZWQg
UGVuZGluZ0xvYWRGbGFnczsKLSAgICBQZW5kaW5nTG9hZEZsYWdzIG1fcGVuZGluZ0xvYWRGbGFn
czsKKyAgICB0eXBlZGVmIHVuc2lnbmVkIFBlbmRpbmdBY3Rpb25GbGFnczsKKyAgICBQZW5kaW5n
QWN0aW9uRmxhZ3MgbV9wZW5kaW5nQWN0aW9uRmxhZ3M7CiAKICAgICBib29sIG1fcGxheWluZyA6
IDE7CiAgICAgYm9vbCBtX2lzV2FpdGluZ1VudGlsTWVkaWFDYW5TdGFydCA6IDE7CkBAIC03MTgs
NiArNzMxLDEwIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKICAg
ICBSZWZQdHI8TWVkaWFLZXlzPiBtX21lZGlhS2V5czsKICNlbmRpZgorCisjaWYgVVNFKFBMQVRG
T1JNX1RFWFRfVFJBQ0tfTUVOVSkKKyAgICBSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2tNZW51SW50
ZXJmYWNlPiBtX3BsYXRmb3JtTWVudTsKKyNlbmRpZgogfTsKIAogI2lmIEVOQUJMRShWSURFT19U
UkFDSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2su
aAkocmV2aXNpb24gMTQ1Mjk3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRU
ZXh0VHJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsMTAgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgYWRkR2VuZXJpY0N1ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlKiwgR2Vu
ZXJpY0N1ZURhdGEqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkV2ViVlRUQ3VlKElu
YmFuZFRleHRUcmFja1ByaXZhdGUqLCBkb3VibGUsIGRvdWJsZSwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAKKyNpZiBVU0UoUExBVEZPUk1f
VEVYVF9UUkFDS19NRU5VKQorICAgIHZpcnR1YWwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSogcHJp
dmF0ZVRyYWNrKCkgT1ZFUlJJREUgeyByZXR1cm4gbV9wcml2YXRlLmdldCgpOyB9CisjZW5kaWYK
KwogICAgIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBtX3ByaXZhdGU7CiB9OwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCShyZXZpc2lvbiAxNDUy
OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM5Nyw2ICszOTcsMzggQEAgYm9vbCBUZXh0VHJhY2s6Omhhc0N1ZShUZXh0VHJh
Y2tDdWUqIGN1ZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorI2lmIFVTRShQTEFURk9STV9URVhU
X1RSQUNLX01FTlUpCitQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPiBUZXh0VHJhY2s6OnBs
YXRmb3JtVGV4dFRyYWNrKCkKK3sKKyAgICBpZiAobV9wbGF0Zm9ybVRleHRUcmFjaykKKyAgICAg
ICAgcmV0dXJuIG1fcGxhdGZvcm1UZXh0VHJhY2s7CisKKyAgICBQbGF0Zm9ybVRleHRUcmFjazo6
VHJhY2tLaW5kIGtpbmQgPSBQbGF0Zm9ybVRleHRUcmFjazo6Q2FwdGlvbjsKKyAgICBpZiAobV9r
aW5kID09IHN1YnRpdGxlc0tleXdvcmQoKSkKKyAgICAgICAga2luZCA9IFBsYXRmb3JtVGV4dFRy
YWNrOjpTdWJ0aXRsZTsKKyAgICBlbHNlIGlmIChtX2tpbmQgPT0gY2FwdGlvbnNLZXl3b3JkKCkp
CisgICAgICAgIGtpbmQgPSBQbGF0Zm9ybVRleHRUcmFjazo6Q2FwdGlvbjsKKyAgICBlbHNlIGlm
IChtX2tpbmQgPT0gZGVzY3JpcHRpb25zS2V5d29yZCgpKQorICAgICAgICBraW5kID0gUGxhdGZv
cm1UZXh0VHJhY2s6OkRlc2NyaXB0aW9uOworICAgIGVsc2UgaWYgKG1fa2luZCA9PSBjaGFwdGVy
c0tleXdvcmQoKSkKKyAgICAgICAga2luZCA9IFBsYXRmb3JtVGV4dFRyYWNrOjpDaGFwdGVyOwor
ICAgIGVsc2UgaWYgKG1fa2luZCA9PSBtZXRhZGF0YUtleXdvcmQoKSkKKyAgICAgICAga2luZCA9
IFBsYXRmb3JtVGV4dFRyYWNrOjpNZXRhRGF0YTsKKworICAgIFBsYXRmb3JtVGV4dFRyYWNrOjpU
cmFja1R5cGUgdHlwZSA9IFBsYXRmb3JtVGV4dFRyYWNrOjpPdXRPZkJhbmQ7CisgICAgaWYgKG1f
dHJhY2tUeXBlID09IFRyYWNrRWxlbWVudCkKKyAgICAgICAgdHlwZSA9IFBsYXRmb3JtVGV4dFRy
YWNrOjpPdXRPZkJhbmQ7CisgICAgZWxzZSBpZiAobV90cmFja1R5cGUgPT0gQWRkVHJhY2spCisg
ICAgICAgIHR5cGUgPSBQbGF0Zm9ybVRleHRUcmFjazo6U2NyaXB0OworICAgIGVsc2UgaWYgKG1f
dHJhY2tUeXBlID09IEluQmFuZCkKKyAgICAgICAgdHlwZSA9IFBsYXRmb3JtVGV4dFRyYWNrOjpJ
bkJhbmQ7CisKKyAgICBtX3BsYXRmb3JtVGV4dFRyYWNrID0gUGxhdGZvcm1UZXh0VHJhY2s6OmNy
ZWF0ZSh0aGlzLCBtX2xhYmVsLCBtX2xhbmd1YWdlLCBraW5kLCB0eXBlKTsKKworICAgIHJldHVy
biBtX3BsYXRmb3JtVGV4dFRyYWNrOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgJKHJl
dmlzaW9uIDE0NTI5NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDEwIEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIFVTRShQTEFURk9S
TV9URVhUX1RSQUNLX01FTlUpCisjaW5jbHVkZSAiUGxhdGZvcm1UZXh0VHJhY2suaCIKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CkBAIC01
Myw3ICs1NywxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1
ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pID0gMDsKIH07CiAKLWNsYXNz
IFRleHRUcmFjayA6IHB1YmxpYyBUcmFja0Jhc2UgeworY2xhc3MgVGV4dFRyYWNrIDogcHVibGlj
IFRyYWNrQmFzZQorI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCisgICAgLCBwdWJs
aWMgUGxhdGZvcm1UZXh0VHJhY2tDbGllbnQKKyNlbmRpZgorICAgIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxUZXh0VHJhY2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBr
aW5kLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1
YWdlKQogICAgIHsKQEAgLTEyNSw2ICsxMzMsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCByZW1v
dmVBbGxDdWVzKCk7CiAKKyNpZiBVU0UoUExBVEZPUk1fVEVYVF9UUkFDS19NRU5VKQorICAgIFBh
c3NSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+IHBsYXRmb3JtVGV4dFRyYWNrKCk7CisjZW5kaWYK
KwogcHJvdGVjdGVkOgogICAgIFRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGV4
dFRyYWNrQ2xpZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBraW5kLCBjb25zdCBBdG9taWNTdHJp
bmcmIGxhYmVsLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlLCBUZXh0VHJhY2tUeXBlKTsK
IApAQCAtMTMyLDYgKzE0NCwxMyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgVGV4dFRy
YWNrQ3VlTGlzdCogZW5zdXJlVGV4dFRyYWNrQ3VlTGlzdCgpOworCisjaWYgVVNFKFBMQVRGT1JN
X1RFWFRfVFJBQ0tfTUVOVSkKKyAgICB2aXJ0dWFsIFRleHRUcmFjayogcHVibGljVHJhY2soKSBP
VkVSUklERSB7IHJldHVybiB0aGlzOyB9CisKKyAgICBSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+
IG1fcGxhdGZvcm1UZXh0VHJhY2s7CisjZW5kaWYKKwogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1f
bWVkaWFFbGVtZW50OwogICAgIEF0b21pY1N0cmluZyBtX2tpbmQ7CiAgICAgQXRvbWljU3RyaW5n
IG1fbGFiZWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwCShyZXZpc2lvbiAxNDUyOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExMjAsNyAr
MTEyMCwxOSBAQCB2b2lkIE1lZGlhUGxheWVyOjpzZXRUZXh0VHJhY2tSZXByZXNlbnRhCiB7CiAg
ICAgbV9wcml2YXRlLT5zZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihyZXByZXNlbnRhdGlvbik7
CiB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpZiBVU0UoUExB
VEZPUk1fVEVYVF9UUkFDS19NRU5VKQorYm9vbCBNZWRpYVBsYXllcjo6aW1wbGVtZW50c1RleHRU
cmFja0NvbnRyb2xzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5pbXBsZW1lbnRz
VGV4dFRyYWNrQ29udHJvbHMoKTsKK30KKworUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFja01l
bnVJbnRlcmZhY2U+IE1lZGlhUGxheWVyOjp0ZXh0VHJhY2tNZW51KCkKK3sKKyAgICByZXR1cm4g
bV9wcml2YXRlLT50ZXh0VHJhY2tNZW51KCk7Cit9CisjZW5kaWYgLy8gVVNFKFBMQVRGT1JNX1RF
WFRfVFJBQ0tfTUVOVSkKIAogdm9pZCBNZWRpYVBsYXllcjo6cmVzZXRNZWRpYUVuZ2luZXMoKQog
ewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5oCShyZXZpc2lvbiAxNDUyOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDks
IDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OCw2ICs0OCwxMCBAQAogI2luY2x1
ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNlbmRpZgogCisjaWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJB
Q0tfTUVOVSkKKyNpbmNsdWRlICJQbGF0Zm9ybVRleHRUcmFja01lbnUuaCIKKyNlbmRpZgorCiBP
QkpDX0NMQVNTIEFWUGxheWVyOwogT0JKQ19DTEFTUyBRVE1vdmllOwogCkBAIC00MzcsNiArNDQx
LDExIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIHJlc2V0TWVkaWFFbmdpbmVzKCk7CiAK
KyNpZiBVU0UoUExBVEZPUk1fVEVYVF9UUkFDS19NRU5VKQorICAgIGJvb2wgaW1wbGVtZW50c1Rl
eHRUcmFja0NvbnRyb2xzKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFj
a01lbnVJbnRlcmZhY2U+IHRleHRUcmFja01lbnUoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAg
IE1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50Kik7CiAgICAgdm9pZCBsb2FkV2l0aE5leHRN
ZWRpYUVuZ2luZShNZWRpYVBsYXllckZhY3RvcnkqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCShyZXZpc2lv
biAxNDUyOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
clByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEludFJlY3Q7
CiBjbGFzcyBJbnRTaXplOworY2xhc3MgUGxhdGZvcm1UZXh0VHJhY2s7CiAKIGNsYXNzIE1lZGlh
UGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xODAs
NiArMTgxLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lk
IHNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1JlcHJlc2VudGF0aW9uKikgeyB9
CiAjZW5kaWYKKworI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCisgICAgdmlydHVh
bCBib29sIGltcGxlbWVudHNUZXh0VHJhY2tDb250cm9scygpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrTWVudUludGVyZmFj
ZT4gdGV4dFRyYWNrTWVudSgpIHsgcmV0dXJuIDA7IH0KKyNlbmRpZgorCiB9OwogCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRleHRUcmFjay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4
dFRyYWNrLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QbGF0Zm9ybVRleHRUcmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFBsYXRmb3JtVGV4dFRyYWNrX2gKKyNkZWZpbmUgUGxhdGZvcm1U
ZXh0VHJhY2tfaAorCisjaWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkKKworI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGV4dFRyYWNrOworY2xhc3MgSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZTsKKworY2xhc3MgUGxhdGZvcm1UZXh0VHJhY2tDbGllbnQgeworcHVibGlj
OgorICAgIHZpcnR1YWwgflBsYXRmb3JtVGV4dFRyYWNrQ2xpZW50KCkgeyB9CisgICAgCisgICAg
dmlydHVhbCBUZXh0VHJhY2sqIHB1YmxpY1RyYWNrKCkgPSAwOworICAgIHZpcnR1YWwgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZSogcHJpdmF0ZVRyYWNrKCkgeyByZXR1cm4gMDsgfQorfTsKKworY2xh
c3MgUGxhdGZvcm1UZXh0VHJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybVRleHRUcmFj
az4geworcHVibGljOgorICAgIGVudW0gVHJhY2tLaW5kIHsgU3VidGl0bGUgPSAwLCBDYXB0aW9u
ID0gMSwgRGVzY3JpcHRpb24gPSAyLCBDaGFwdGVyID0gMywgTWV0YURhdGEgPSA0IH07CisgICAg
ZW51bSBUcmFja1R5cGUgeyBJbkJhbmQgPSAwLCBPdXRPZkJhbmQgPSAxLCBTY3JpcHQgPSAyIH07
CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gY3JlYXRlKFBsYXRm
b3JtVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0
cmluZyYgbGFuZ3VhZ2UsIFRyYWNrS2luZCBraW5kLCBUcmFja1R5cGUgdHlwZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1UZXh0VHJhY2soY2xpZW50LCBsYWJl
bCwgbGFuZ3VhZ2UsIGtpbmQsIHR5cGUpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5QbGF0Zm9y
bVRleHRUcmFjaygpIHsgfQorICAgIAorICAgIFRyYWNrVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9CisgICAgVHJhY2tLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7
IH0KKyAgICBTdHJpbmcgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX2xhYmVsOyB9CisgICAgU3Ry
aW5nIGxhbmd1YWdlKCkgY29uc3QgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQorICAgIFBsYXRmb3Jt
VGV4dFRyYWNrQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQorICAg
IAorcHJvdGVjdGVkOgorICAgIFBsYXRmb3JtVGV4dFRyYWNrKFBsYXRmb3JtVGV4dFRyYWNrQ2xp
ZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2Us
IFRyYWNrS2luZCBraW5kLCBUcmFja1R5cGUgdHlwZSkKKyAgICAgICAgOiBtX2xhYmVsKGxhYmVs
KQorICAgICAgICAsIG1fbGFuZ3VhZ2UobGFuZ3VhZ2UpCisgICAgICAgICwgbV9raW5kKGtpbmQp
CisgICAgICAgICwgbV90eXBlKHR5cGUpCisgICAgICAgICwgbV9jbGllbnQoY2xpZW50KQorICAg
IHsKKyAgICB9CisKKyAgICBTdHJpbmcgbV9sYWJlbDsKKyAgICBTdHJpbmcgbV9sYW5ndWFnZTsK
KyAgICBUcmFja0tpbmQgbV9raW5kOworICAgIFRyYWNrVHlwZSBtX3R5cGU7CisgICAgUGxhdGZv
cm1UZXh0VHJhY2tDbGllbnQqIG1fY2xpZW50OworfTsKKworfQorCisjZW5kaWYKKworI2VuZGlm
IC8vIFBsYXRmb3JtVGV4dFRyYWNrX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrTWVudS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrTWVudS5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2tN
ZW51LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgUGxhdGZvcm1UZXh0VHJhY2tNZW51X2gKKyNkZWZpbmUgUGxhdGZvcm1UZXh0VHJhY2tNZW51
X2gKKworI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCisKKyNpbmNsdWRlICJQbGF0
Zm9ybVRleHRUcmFjay5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGxhdGZv
cm1UZXh0VHJhY2s7CisKK2NsYXNzIFBsYXRmb3JtVGV4dFRyYWNrTWVudUNsaWVudCB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+UGxhdGZvcm1UZXh0VHJhY2tNZW51Q2xpZW50KCkgeyB9CisgICAg
CisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkVGV4dFRyYWNrKFBhc3NSZWZQdHI8UGxhdGZv
cm1UZXh0VHJhY2s+KSA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtVGV4
dFRyYWNrPiA+IHBsYXRmb3JtVGV4dFRyYWNrcygpID0gMDsKK307CisKK2NsYXNzIFBsYXRmb3Jt
VGV4dFRyYWNrTWVudUludGVyZmFjZSAgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybVRleHRU
cmFja01lbnVJbnRlcmZhY2U+IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBQbGF0Zm9ybVRleHRU
cmFja01lbnVJbnRlcmZhY2UoKSB7IH0KKyAgICB2aXJ0dWFsIH5QbGF0Zm9ybVRleHRUcmFja01l
bnVJbnRlcmZhY2UoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCB0cmFja3NEaWRDaGFuZ2UoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHRyYWNrV2FzU2VsZWN0ZWQoUGFzc1JlZlB0cjxQbGF0Zm9y
bVRleHRUcmFjaz4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFBsYXRmb3JtVGV4
dFRyYWNrTWVudUNsaWVudCopID0gMDsKK307CisKK30KKworI2VuZGlmICAvLyBVU0UoUExBVEZP
Uk1fVEVYVF9UUkFDS19NRU5VKQorCisjZW5kaWYgLy8gUGxhdGZvcm1UZXh0VHJhY2tNZW51X2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192350</attachid>
            <date>2013-03-09 13:03:48 -0800</date>
            <delta_ts>2013-03-09 13:31:21 -0800</delta_ts>
            <desc>Updated patch, removed the offensive space.</desc>
            <filename>patch_5.txt</filename>
            <type>text/plain</type>
            <size>35850</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTMyMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY0IEBACisyMDEzLTAzLTA5ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSBwbGF0Zm9y
bSBjb2RlIHRvIGltcGxlbWVudCB0ZXh0IHRyYWNrIG1lbnUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTkyNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhlIG5ldyBjb2RlIGlz
bid0IGVuYWJsZWQgaW4gYW55IHBvcnRzIHlldC4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogQWRkIFBsYXRmb3JtVGV4dFRyYWNrLmggYW5kIFBsYXRmb3Jt
VGV4dFRyYWNrTWVudS5oLgorCisgICAgICAgICogaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0ZUZvckpTQ29uc3RydWN0
b3IpOiBzY2hlZHVsZUxvYWQgLT4gc2NoZWR1bGVEZWxheWVkQWN0aW9uLgorCisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQpOiBEZWFsIHdpdGggc2NoZWR1bGVMb2FkIHRvIHNjaGVk
dWxlRGVsYXllZEFjdGlvbiByZW5hbWUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjppbnNlcnRlZEludG8pOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRGVsYXllZEFjdGlvbik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVOZXh0U291cmNlQ2hpbGQp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRUaW1lckZp
cmVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJh
Y2tNb2RlQ2hhbmdlZCk6IE5vdGlmeSBwbGF0Zm9ybSBtZW51IG9mIHRyYWNrIGNoYW5nZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXlJbnRlcm5hbCk6IERlYWwgd2l0
aCBzY2hlZHVsZUxvYWQgdG8gc2NoZWR1bGVEZWxheWVkQWN0aW9uIHJlbmFtZS4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlSW50ZXJuYWwpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkVHJhY2spOiBE
aXR0by4gQ2FsbCBhZGRUcmFjaygpIGluc3RlYWQgb2YgYXBwZW5kaW5nIAorICAgICAgICAgICAg
dGhlIHRyYWNrIGRpcmVjdGx5LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
c2V0U2VsZWN0ZWRUZXh0VHJhY2spOiBEZWFsIHdpdGggcGxhdGZvcm0gbWVudSBjaGFuZ2luZyB0
aGUKKyAgICAgICAgICAgIHNlbGVjdGVkIHRyYWNrLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cGxhdGZvcm1UZXh0VHJhY2tzKTogUmV0dXJuIGFuIGFycmF5IG9mIFBsYXRm
b3JtVHJhY2tzIHJlcHJlc2VudGluZworICAgICAgICAgICAgdGhlIGN1cnJlbnQgdGV4dCB0cmFj
a3MuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpub3RpZnlNZWRpYVBsYXll
ck9mVGV4dFRyYWNrQ2hhbmdlcyk6IE5vdGlmeSB0aGUgcGxhdGZvcm0gbWVudQorICAgICAgICAg
ICAgdGhhdCB0aGUgbGlzdCBvZiB0ZXh0IHRyYWNrcyBoYXMgY2hhbmdlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXRmb3JtVGV4dFRyYWNrTWVudSk6IFJldHVybiB0
aGUgcGxhdGZvcm0gdHJhY2sgbWVudSwgaWYgYW55LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6Y2xvc2VDYXB0aW9uVHJhY2tzQ2hhbmdlZCk6IAorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6YWRkVHJhY2spOiBDYWxsIGFkZFRyYWNrKCkgaW5zdGVhZCBv
ZiBhcHBlbmRpbmcgdGhlIHRyYWNrIGRpcmVjdGx5LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cmVtb3ZlVHJhY2spOiBDYWxsIGNsb3NlQ2FwdGlvblRyYWNrc0NoYW5nZWQu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJhY2spOiBDYWxs
IGFkZFRyYWNrKCkgaW5zdGVhZCBvZiBhcHBlbmRpbmcgdGhlIHRyYWNrIGRpcmVjdGx5LgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVHJhY2spOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlbW92ZVRyYWNrKTogRGVhbCB3
aXRoIHNjaGVkdWxlTG9hZCB0byBzY2hlZHVsZURlbGF5ZWRBY3Rpb24gcmVuYW1lLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c291cmNlV2FzQWRkZWQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFQbGF5ZXIpOiBGb3Jn
ZXQgdGhlIHBsYXRmb3JtIHRyYWNrIG1lbnUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpyZXN1bWUpOiBEZWFsIHdpdGggc2NoZWR1bGVMb2FkIHRvIHNjaGVkdWxlRGVsYXll
ZEFjdGlvbiByZW5hbWUuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisKKyAg
ICAgICAgKiBodG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oOiBzY2hlZHVsZUxvYWQgLT4gc2No
ZWR1bGVEZWxheWVkQWN0aW9uLgorCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpwbGF0Zm9ybVRleHRUcmFjayk6IENyZWF0
ZSBhIFBsYXRmb3JtVGV4dFRyYWNrLgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmg6
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6aW1wbGVtZW50c1RleHRUcmFja0NvbnRyb2xzKTogTmV3
LCBwbGF5ZXIgcHJpdmF0ZSBwYXNzdGhyb3VnaC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjp0ZXh0VHJhY2tNZW51KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclBy
aXZhdGUuaDoKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNr
Lmg6IEFkZGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJh
Y2tNZW51Lmg6IEFkZGVkLgorCiAyMDEzLTAzLTA5ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxz
b25AYXBwbGUuY29tPgogCiAgICAgICAgIFZpZGVvIHNpemUgY2FsY3VsYXRlZCBpbmNvcnJlY3Rs
eSB3aGVuIFBMVUdJTl9QUk9YWV9GT1JfVklERU8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE0NTI5NykKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNzQwNSw2ICs3NDA1LDggQEAKIAkJMDcyMEIwOUYxNEQzMzIzNTAwNjQyOTU1
IC8qIEdlbmVyaWNFdmVudFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdlbmVyaWNFdmVudFF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MjBC
MDlGMTREMzMyMzUwMDY0Mjk1NiAvKiBHZXN0dXJlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gR2VzdHVyZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDcyMEIwOUYxNEQzMzIzNTAwNjQyOTU3IC8qIEdlc3R1cmVFdmVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZXN0dXJlRXZlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcyODQ3RTIxNkVCQzVCMDAwNDNDRkE0IC8qIFBsYXRmb3Jt
VGV4dFRyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtVGV4dFRyYWNrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3Mjg0N0UzMTZFQkM1QjAwMDQzQ0ZBNCAvKiBQbGF0Zm9y
bVRleHRUcmFja01lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1UZXh0VHJhY2tNZW51Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MkNBODYwMTZDQjREQzMwMDhBRTEzMSAv
KiBDYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwNzM1RUU2OTBGNDBDNUU0MDA0QTI2MDQgLyogTWVkaWFQbGF5ZXJQcm94eS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByb3h5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NTM4NjAwMTQ0ODlFOTgwMEI3ODQ1MiAvKiBD
YWNoZWRUZXh0VHJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q2FjaGVkVGV4dFRyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNzk1
LDYgKzIwNzk3LDggQEAKIAkJCQlBOEZBNkU1QzBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5j
cHAgKi8sCiAJCQkJQThGQTZFNUIwRTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uaCAqLywKIAkJ
CQkwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1MYXllci5oICovLAorCQkJCTA3
Mjg0N0UyMTZFQkM1QjAwMDQzQ0ZBNCAvKiBQbGF0Zm9ybVRleHRUcmFjay5oICovLAorCQkJCTA3
Mjg0N0UzMTZFQkM1QjAwMDQzQ0ZBNCAvKiBQbGF0Zm9ybVRleHRUcmFja01lbnUuaCAqLywKIAkJ
CQlCQ0FCNDE3RjEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmNwcCAqLywKIAkJCQlCQ0FCNDE4
MDEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggKi8sCiAJCQkJQTczRjk1RkMxMkM5N0JGRTAw
MzFBQUY5IC8qIFJvdW5kZWRSZWN0LmNwcCAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEF1ZGlvRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXVkaW9FbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1Mjk3KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTUzLDcgKzUyLDcgQEAgUGFzc1JlZlB0cjxIVE1MQXVkaW9FbGVtZW50PiBIVE1MQXVk
aW9FbAogICAgIGF1ZGlvLT5zZXRQcmVsb2FkKCJhdXRvIik7CiAgICAgaWYgKCFzcmMuaXNOdWxs
KCkpIHsKICAgICAgICAgYXVkaW8tPnNldFNyYyhzcmMpOwotICAgICAgICBhdWRpby0+c2NoZWR1
bGVMb2FkKEhUTUxNZWRpYUVsZW1lbnQ6Ok1lZGlhUmVzb3VyY2UpOworICAgICAgICBhdWRpby0+
c2NoZWR1bGVEZWxheWVkQWN0aW9uKEhUTUxNZWRpYUVsZW1lbnQ6OkxvYWRNZWRpYVJlc291cmNl
KTsKICAgICB9CiAgICAgYXVkaW8tPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiBhdWRp
by5yZWxlYXNlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAJKHJldmlzaW9uIDE0NTI5NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwg
MjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEyOSw2ICsxMjksMTAgQEAKICNpbmNsdWRlICJN
ZWRpYUtleXMuaCIKICNlbmRpZgogCisjaWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkK
KyNpbmNsdWRlICJQbGF0Zm9ybVRleHRUcmFjay5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTI2MSw3ICsyNjUsNyBAQCBIVE1MTWVk
aWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0CiAgICAgLCBtX21pbmltdW1XYWxsQ2xv
Y2tUaW1lVG9DYWNoZU1lZGlhVGltZSgwKQogICAgICwgbV9mcmFnbWVudFN0YXJ0VGltZShNZWRp
YVBsYXllcjo6aW52YWxpZFRpbWUoKSkKICAgICAsIG1fZnJhZ21lbnRFbmRUaW1lKE1lZGlhUGxh
eWVyOjppbnZhbGlkVGltZSgpKQotICAgICwgbV9wZW5kaW5nTG9hZEZsYWdzKDApCisgICAgLCBt
X3BlbmRpbmdBY3Rpb25GbGFncygwKQogICAgICwgbV9wbGF5aW5nKGZhbHNlKQogICAgICwgbV9p
c1dhaXRpbmdVbnRpbE1lZGlhQ2FuU3RhcnQoZmFsc2UpCiAgICAgLCBtX3Nob3VsZERlbGF5TG9h
ZEV2ZW50KGZhbHNlKQpAQCAtMzk5LDggKzQwMyw4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY28KICAgICBpZiAobmFtZSA9PSBzcmNBdHRyKSB7CiAgICAgICAgIC8v
IFRyaWdnZXIgYSByZWxvYWQsIGFzIGxvbmcgYXMgdGhlICdzcmMnIGF0dHJpYnV0ZSBpcyBwcmVz
ZW50LgogICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBjbGVhck1l
ZGlhUGxheWVyKE1lZGlhUmVzb3VyY2UpOwotICAgICAgICAgICAgc2NoZWR1bGVMb2FkKE1lZGlh
UmVzb3VyY2UpOworICAgICAgICAgICAgY2xlYXJNZWRpYVBsYXllcihMb2FkTWVkaWFSZXNvdXJj
ZSk7CisgICAgICAgICAgICBzY2hlZHVsZURlbGF5ZWRBY3Rpb24oTG9hZE1lZGlhUmVzb3VyY2Up
OwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChuYW1lID09IGNvbnRyb2xzQXR0cikKICAgICAg
ICAgY29uZmlndXJlTWVkaWFDb250cm9scygpOwpAQCAtNDk1LDcgKzQ5OSw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWwKICAgICAKICAgICBmb3IgKE5vZGUqIG5v
ZGUgPSBmaXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7CiAg
ICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkgewotICAgICAgICAgICAgc2No
ZWR1bGVMb2FkKFRleHRUcmFja1Jlc291cmNlKTsKKyAgICAgICAgICAgIHNjaGVkdWxlRGVsYXll
ZEFjdGlvbihMb2FkVGV4dFRyYWNrUmVzb3VyY2UpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICB9CkBAIC01NTAsNyArNTU0LDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0
aW9uUmVxdWVzdCBIVE1MTQogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Omluc2Vy
dGVkSW50byIpOwogICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZEludG8oaW5zZXJ0aW9uUG9pbnQp
OwogICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpICYmICFnZXRBdHRyaWJ1dGUo
c3JjQXR0cikuaXNFbXB0eSgpICYmIG1fbmV0d29ya1N0YXRlID09IE5FVFdPUktfRU1QVFkpCi0g
ICAgICAgIHNjaGVkdWxlTG9hZChNZWRpYVJlc291cmNlKTsKKyAgICAgICAgc2NoZWR1bGVEZWxh
eWVkQWN0aW9uKExvYWRNZWRpYVJlc291cmNlKTsKICAgICBjb25maWd1cmVNZWRpYUNvbnRyb2xz
KCk7CiAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7CiB9CkBAIC02MDksMjIgKzYxMywyNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlY2FsY1N0eWxlKFN0CiAgICAgICAgIHJlbmRlcmVy
KCktPnVwZGF0ZUZyb21FbGVtZW50KCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2No
ZWR1bGVMb2FkKExvYWRUeXBlIGxvYWRUeXBlKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hl
ZHVsZURlbGF5ZWRBY3Rpb24oRGVsYXllZEFjdGlvblR5cGUgYWN0aW9uVHlwZSkKIHsKICAgICBM
T0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUxvYWQiKTsKIAotICAgIGlmICgo
bG9hZFR5cGUgJiBNZWRpYVJlc291cmNlKSAmJiAhKG1fcGVuZGluZ0xvYWRGbGFncyAmIE1lZGlh
UmVzb3VyY2UpKSB7CisgICAgaWYgKChhY3Rpb25UeXBlICYgTG9hZE1lZGlhUmVzb3VyY2UpICYm
ICEobV9wZW5kaW5nQWN0aW9uRmxhZ3MgJiBMb2FkTWVkaWFSZXNvdXJjZSkpIHsKICNpZiBFTkFC
TEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKICAgICAgICAgY3JlYXRlTWVkaWFQbGF5ZXJQcm94
eSgpOwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBwcmVwYXJlRm9yTG9hZCgpOwotICAgICAg
ICBtX3BlbmRpbmdMb2FkRmxhZ3MgfD0gTWVkaWFSZXNvdXJjZTsKKyAgICAgICAgbV9wZW5kaW5n
QWN0aW9uRmxhZ3MgfD0gTG9hZE1lZGlhUmVzb3VyY2U7CiAgICAgfQogCiAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1Ry
YWNrRW5hYmxlZCgpICYmIChsb2FkVHlwZSAmIFRleHRUcmFja1Jlc291cmNlKSkKLSAgICAgICAg
bV9wZW5kaW5nTG9hZEZsYWdzIHw9IFRleHRUcmFja1Jlc291cmNlOworICAgIGlmIChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpICYmIChhY3Rpb25UeXBl
ICYgTG9hZFRleHRUcmFja1Jlc291cmNlKSkKKyAgICAgICAgbV9wZW5kaW5nQWN0aW9uRmxhZ3Mg
fD0gTG9hZFRleHRUcmFja1Jlc291cmNlOworI2VuZGlmCisKKyNpZiBVU0UoUExBVEZPUk1fVEVY
VF9UUkFDS19NRU5VKQorICAgIGlmIChhY3Rpb25UeXBlICYgVGV4dFRyYWNrQ2hhbmdlc05vdGlm
aWNhdGlvbikKKyAgICAgICAgbV9wZW5kaW5nQWN0aW9uRmxhZ3MgfD0gVGV4dFRyYWNrQ2hhbmdl
c05vdGlmaWNhdGlvbjsKICNlbmRpZgogCiAgICAgaWYgKCFtX2xvYWRUaW1lci5pc0FjdGl2ZSgp
KQpAQCAtNjM0LDcgKzY0Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVMb2Fk
KExvYWQKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVOZXh0U291cmNlQ2hpbGQoKQog
ewogICAgIC8vIFNjaGVkdWxlIHRoZSB0aW1lciB0byB0cnkgdGhlIG5leHQgPHNvdXJjZT4gZWxl
bWVudCBXSVRIT1VUIHJlc2V0dGluZyBzdGF0ZSBhbGEgcHJlcGFyZUZvckxvYWQuCi0gICAgbV9w
ZW5kaW5nTG9hZEZsYWdzIHw9IE1lZGlhUmVzb3VyY2U7CisgICAgbV9wZW5kaW5nQWN0aW9uRmxh
Z3MgfD0gTG9hZE1lZGlhUmVzb3VyY2U7CiAgICAgbV9sb2FkVGltZXIuc3RhcnRPbmVTaG90KDAp
OwogfQogCkBAIC02NTQsMTggKzY2MywyMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRU
aW1lckZpcmVkKFRpCiAgICAgUmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3QodGhpcyk7
IC8vIGxvYWROZXh0U291cmNlQ2hpbGQgbWF5IGZpcmUgJ2JlZm9yZWxvYWQnLCB3aGljaCBjYW4g
bWFrZSBhcmJpdHJhcnkgRE9NIG11dGF0aW9ucy4KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykK
LSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQo
KSAmJiAobV9wZW5kaW5nTG9hZEZsYWdzICYgVGV4dFRyYWNrUmVzb3VyY2UpKQorICAgIGlmIChS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpICYmIChtX3Bl
bmRpbmdBY3Rpb25GbGFncyAmIExvYWRUZXh0VHJhY2tSZXNvdXJjZSkpCiAgICAgICAgIGNvbmZp
Z3VyZVRleHRUcmFja3MoKTsKICNlbmRpZgogCi0gICAgaWYgKG1fcGVuZGluZ0xvYWRGbGFncyAm
IE1lZGlhUmVzb3VyY2UpIHsKKyAgICBpZiAobV9wZW5kaW5nQWN0aW9uRmxhZ3MgJiBMb2FkTWVk
aWFSZXNvdXJjZSkgewogICAgICAgICBpZiAobV9sb2FkU3RhdGUgPT0gTG9hZGluZ0Zyb21Tb3Vy
Y2VFbGVtZW50KQogICAgICAgICAgICAgbG9hZE5leHRTb3VyY2VDaGlsZCgpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBsb2FkSW50ZXJuYWwoKTsKICAgICB9CiAKLSAgICBtX3BlbmRpbmdM
b2FkRmxhZ3MgPSAwOworI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCisgICAgaWYg
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkgJiYgKG1f
cGVuZGluZ0FjdGlvbkZsYWdzICYgVGV4dFRyYWNrQ2hhbmdlc05vdGlmaWNhdGlvbikpCisgICAg
ICAgIG5vdGlmeU1lZGlhUGxheWVyT2ZUZXh0VHJhY2tDaGFuZ2VzKCk7CisjZW5kaWYKKworICAg
IG1fcGVuZGluZ0FjdGlvbkZsYWdzID0gMDsKIH0KIAogUGFzc1JlZlB0cjxNZWRpYUVycm9yPiBI
VE1MTWVkaWFFbGVtZW50OjplcnJvcigpIGNvbnN0IApAQCAtMTM4NSw2ICsxMzk5LDExIEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW4KICAgICAgICAgfQogICAgIH0K
IAorI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCisgICAgaWYgKHBsYXRmb3JtVGV4
dFRyYWNrTWVudSgpKQorICAgICAgICBwbGF0Zm9ybVRleHRUcmFja01lbnUoKS0+dHJhY2tXYXNT
ZWxlY3RlZCh0cmFjay0+cGxhdGZvcm1UZXh0VHJhY2soKSk7CisjZW5kaWYKKyAgICAKICAgICBj
b25maWd1cmVUZXh0VHJhY2tEaXNwbGF5KCk7CiAgICAgdXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3Vl
cyhjdXJyZW50VGltZSgpKTsKIH0KQEAgLTI0MjIsNyArMjQ0MSw3IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6cGxheUludGVybmFsKCkKIAogICAgIC8vIDQuOC4xMC45LiBQbGF5aW5nIHRoZSBt
ZWRpYSByZXNvdXJjZQogICAgIGlmICghbV9wbGF5ZXIgfHwgbV9uZXR3b3JrU3RhdGUgPT0gTkVU
V09SS19FTVBUWSkKLSAgICAgICAgc2NoZWR1bGVMb2FkKE1lZGlhUmVzb3VyY2UpOworICAgICAg
ICBzY2hlZHVsZURlbGF5ZWRBY3Rpb24oTG9hZE1lZGlhUmVzb3VyY2UpOwogCiAgICAgaWYgKGVu
ZGVkUGxheWJhY2soKSkKICAgICAgICAgc2VlaygwLCBJR05PUkVfRVhDRVBUSU9OKTsKQEAgLTI0
NjMsNyArMjQ4Miw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGF1c2VJbnRlcm5hbCgpCiAK
ICAgICAvLyA0LjguMTAuOS4gUGxheWluZyB0aGUgbWVkaWEgcmVzb3VyY2UKICAgICBpZiAoIW1f
cGxheWVyIHx8IG1fbmV0d29ya1N0YXRlID09IE5FVFdPUktfRU1QVFkpCi0gICAgICAgIHNjaGVk
dWxlTG9hZChNZWRpYVJlc291cmNlKTsKKyAgICAgICAgc2NoZWR1bGVEZWxheWVkQWN0aW9uKExv
YWRNZWRpYVJlc291cmNlKTsKIAogICAgIG1fYXV0b3BsYXlpbmcgPSBmYWxzZTsKIApAQCAtMjgx
OSwxMyArMjgzOCwxMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRk
CiAgICAgLy8gNy4gU2V0IHRoZSBuZXcgdGV4dCB0cmFjaydzIG1vZGUgdG8gdGhlIG1vZGUgY29u
c2lzdGVudCB3aXRoIHRoZSB1c2VyJ3MgcHJlZmVyZW5jZXMgYW5kIHRoZSByZXF1aXJlbWVudHMg
b2YKICAgICAvLyB0aGUgcmVsZXZhbnQgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIGRhdGEuCiAgICAg
Ly8gIC0gVGhpcyB3aWxsIGhhcHBlbiBpbiBjb25maWd1cmVUZXh0VHJhY2tzKCkKLSAgICBzY2hl
ZHVsZUxvYWQoVGV4dFRyYWNrUmVzb3VyY2UpOworICAgIHNjaGVkdWxlRGVsYXllZEFjdGlvbihM
b2FkVGV4dFRyYWNrUmVzb3VyY2UpOwogICAgIAogICAgIC8vIDguIEFkZCB0aGUgbmV3IHRleHQg
dHJhY2sgdG8gdGhlIG1lZGlhIGVsZW1lbnQncyBsaXN0IG9mIHRleHQgdHJhY2tzLgogICAgIC8v
IDkuIEZpcmUgYW4gZXZlbnQgd2l0aCB0aGUgbmFtZSBhZGR0cmFjaywgdGhhdCBkb2VzIG5vdCBi
dWJibGUgYW5kIGlzIG5vdCBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50
CiAgICAgLy8gaW50ZXJmYWNlLCB3aXRoIHRoZSB0cmFjayBhdHRyaWJ1dGUgaW5pdGlhbGl6ZWQg
dG8gdGhlIHRleHQgdHJhY2sncyBUZXh0VHJhY2sgb2JqZWN0LCBhdCB0aGUgbWVkaWEgZWxlbWVu
dCdzCiAgICAgLy8gdGV4dFRyYWNrcyBhdHRyaWJ1dGUncyBUZXh0VHJhY2tMaXN0IG9iamVjdC4K
LSAgICB0ZXh0VHJhY2tzKCktPmFwcGVuZCh0ZXh0VHJhY2spOworICAgIGFkZFRyYWNrKHRleHRU
cmFjay5nZXQoKSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRS
ZW1vdmVUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IHBycFRyYWNrKQpA
QCAtMjg0NSw2ICsyODY0LDg5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJE
aWRSZW0KICAgICByZW1vdmVUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOwogfQogCisjaWYgVVNFKFBM
QVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2VsZWN0
ZWRUZXh0VHJhY2soUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gcGxhdGZvcm1UcmFjaykK
K3sKKyAgICBpZiAoIW1fdGV4dFRyYWNrcykKKyAgICAgICAgcmV0dXJuOworCisgICAgVHJhY2tE
aXNwbGF5VXBkYXRlU2NvcGUgc2NvcGUodGhpcyk7CisKKyAgICBpZiAoIXBsYXRmb3JtVHJhY2sp
IHsKKyAgICAgICAgdG9nZ2xlVHJhY2tBdEluZGV4KHRleHRUcmFja3NPZmZJbmRleCgpLCB0cnVl
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFRleHRUcmFjayogdGV4dFRyYWNrOwor
ICAgIHNpemVfdCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBtX3RleHRUcmFja3MtPmxlbmd0aCgp
OyArK2kpIHsKKyAgICAgICAgdGV4dFRyYWNrID0gbV90ZXh0VHJhY2tzLT5pdGVtKGkpOworICAg
ICAgICAKKyAgICAgICAgaWYgKHRleHRUcmFjay0+cGxhdGZvcm1UZXh0VHJhY2soKSA9PSBwbGF0
Zm9ybVRyYWNrKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKGkgPT0gbV90
ZXh0VHJhY2tzLT5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHRvZ2dsZVRyYWNrQXRJ
bmRleChpLCB0cnVlKTsKK30KKworVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gPiBI
VE1MTWVkaWFFbGVtZW50OjpwbGF0Zm9ybVRleHRUcmFja3MoKQoreworICAgIGlmICghbV90ZXh0
VHJhY2tzIHx8ICFtX3RleHRUcmFja3MtPmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gVmVjdG9y
PFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gPigpOworICAgIAorICAgIFZlY3RvcjxSZWZQdHI8
UGxhdGZvcm1UZXh0VHJhY2s+ID4gcGxhdGZvcm1UcmFja3M7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX3RleHRUcmFja3MtPmxlbmd0aCgpOyArK2kpCisgICAgICAgIHBsYXRmb3JtVHJh
Y2tzLmFwcGVuZChtX3RleHRUcmFja3MtPml0ZW0oaSktPnBsYXRmb3JtVGV4dFRyYWNrKCkpOwor
ICAgIAorICAgIHJldHVybiBwbGF0Zm9ybVRyYWNrczsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojpub3RpZnlNZWRpYVBsYXllck9mVGV4dFRyYWNrQ2hhbmdlcygpCit7CisgICAgaWYgKCFt
X3RleHRUcmFja3MgfHwgIW1fdGV4dFRyYWNrcy0+bGVuZ3RoKCkgfHwgIXBsYXRmb3JtVGV4dFRy
YWNrTWVudSgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9wbGF0Zm9ybU1lbnUtPnRy
YWNrc0RpZENoYW5nZSgpOworfQorCitQbGF0Zm9ybVRleHRUcmFja01lbnVJbnRlcmZhY2UqIEhU
TUxNZWRpYUVsZW1lbnQ6OnBsYXRmb3JtVGV4dFRyYWNrTWVudSgpCit7CisgICAgaWYgKG1fcGxh
dGZvcm1NZW51KQorICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybU1lbnUuZ2V0KCk7CisKKyAgICBp
ZiAoIW1fcGxheWVyLT5pbXBsZW1lbnRzVGV4dFRyYWNrQ29udHJvbHMoKSkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBtX3BsYXRmb3JtTWVudSA9IG1fcGxheWVyLT50ZXh0VHJhY2tNZW51KCk7
CisgICAgaWYgKCFtX3BsYXRmb3JtTWVudSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBtX3Bs
YXRmb3JtTWVudS0+c2V0Q2xpZW50KHRoaXMpOworCisgICAgcmV0dXJuIG1fcGxhdGZvcm1NZW51
LmdldCgpOworfQorI2VuZGlmIC8vICNpZiBVU0UoUExBVEZPUk1fVEVYVF9UUkFDS19NRU5VKQor
ICAgIAordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjbG9zZUNhcHRpb25UcmFja3NDaGFuZ2VkKCkK
K3sKKyAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQorICAgICAgICBtZWRpYUNvbnRyb2xzKCkt
PmNsb3NlZENhcHRpb25UcmFja3NDaGFuZ2VkKCk7CisKKyNpZiBVU0UoUExBVEZPUk1fVEVYVF9U
UkFDS19NRU5VKQorICAgIGlmIChtX3BsYXllci0+aW1wbGVtZW50c1RleHRUcmFja0NvbnRyb2xz
KCkpCisgICAgICAgIHNjaGVkdWxlRGVsYXllZEFjdGlvbihUZXh0VHJhY2tDaGFuZ2VzTm90aWZp
Y2F0aW9uKTsKKyNlbmRpZgorfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRyYWNrKFRl
eHRUcmFjayogdHJhY2spCit7CisgICAgdGV4dFRyYWNrcygpLT5hcHBlbmQodHJhY2spOworICAg
IAorICAgIGNsb3NlQ2FwdGlvblRyYWNrc0NoYW5nZWQoKTsKK30KKwogdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpyZW1vdmVUcmFjayhUZXh0VHJhY2sqIHRyYWNrKQogewogICAgIFRyYWNrRGlzcGxh
eVVwZGF0ZVNjb3BlIHNjb3BlKHRoaXMpOwpAQCAtMjg1Miw2ICsyOTU0LDggQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpyZW1vdmVUcmFjayhUZXh0VAogICAgIGlmIChjdWVzKQogICAgICAgICB0
ZXh0VHJhY2tSZW1vdmVDdWVzKHRyYWNrLCBjdWVzKTsKICAgICBtX3RleHRUcmFja3MtPnJlbW92
ZSh0cmFjayk7CisKKyAgICBjbG9zZUNhcHRpb25UcmFja3NDaGFuZ2VkKCk7CiB9CiAKIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQWxsSW5iYW5kVHJhY2tzKCkKQEAgLTI4OTQsNyArMjk5
OCw3IEBAIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBIVE1MTWVkaWFFbGVtZW50OjoKICAgICAvLyBm
aXJzdCBhcHBlbmQgdGhlIHRyYWNrIHRvIHRoZSB0ZXh0IHRyYWNrIGxpc3QuCiAKICAgICAvLyA2
LiBBZGQgdGhlIG5ldyB0ZXh0IHRyYWNrIHRvIHRoZSBtZWRpYSBlbGVtZW50J3MgbGlzdCBvZiB0
ZXh0IHRyYWNrcy4KLSAgICB0ZXh0VHJhY2tzKCktPmFwcGVuZCh0ZXh0VHJhY2spOworICAgIGFk
ZFRyYWNrKHRleHRUcmFjay5nZXQoKSk7CiAKICAgICAvLyAuLi4gaXRzIHRleHQgdHJhY2sgcmVh
ZGluZXNzIHN0YXRlIHRvIHRoZSB0ZXh0IHRyYWNrIGxvYWRlZCBzdGF0ZSAuLi4KICAgICB0ZXh0
VHJhY2stPnNldFJlYWRpbmVzc1N0YXRlKFRleHRUcmFjazo6TG9hZGVkKTsKQEAgLTI5MDIsOSAr
MzAwNiw2IEBAIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBIVE1MTWVkaWFFbGVtZW50OjoKICAgICAv
LyAuLi4gaXRzIHRleHQgdHJhY2sgbW9kZSB0byB0aGUgdGV4dCB0cmFjayBoaWRkZW4gbW9kZSwg
YW5kIGl0cyB0ZXh0IHRyYWNrIGxpc3Qgb2YgY3VlcyB0byBhbiBlbXB0eSBsaXN0IC4uLgogICAg
IHRleHRUcmFjay0+c2V0TW9kZShUZXh0VHJhY2s6OmhpZGRlbktleXdvcmQoKSk7CiAKLSAgICBp
ZiAoaGFzTWVkaWFDb250cm9scygpKQotICAgICAgICBtZWRpYUNvbnRyb2xzKCktPmNsb3NlZENh
cHRpb25UcmFja3NDaGFuZ2VkKCk7Ci0KICAgICByZXR1cm4gdGV4dFRyYWNrLnJlbGVhc2UoKTsK
IH0KIApAQCAtMjkzNCwxMiArMzAzNSwxMiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFk
ZFRyYWNrKEhUTUxUCiAgICAgaWYgKCF0ZXh0VHJhY2spCiAgICAgICAgIHJldHVybjsKICAgICAK
LSAgICB0ZXh0VHJhY2tzKCktPmFwcGVuZCh0ZXh0VHJhY2spOworICAgIGFkZFRyYWNrKHRleHRU
cmFjay5nZXQoKSk7CiAgICAgCiAgICAgLy8gRG8gbm90IHNjaGVkdWxlIHRoZSB0cmFjayBsb2Fk
aW5nIHVudGlsIHBhcnNpbmcgZmluaXNoZXMgc28gd2UgZG9uJ3Qgc3RhcnQgYmVmb3JlIGFsbCB0
cmFja3MKICAgICAvLyBpbiB0aGUgbWFya3VwIGhhdmUgYmVlbiBhZGRlZC4KICAgICBpZiAoIW1f
cGFyc2luZ0luUHJvZ3Jlc3MpCi0gICAgICAgIHNjaGVkdWxlTG9hZChUZXh0VHJhY2tSZXNvdXJj
ZSk7CisgICAgICAgIHNjaGVkdWxlRGVsYXllZEFjdGlvbihMb2FkVGV4dFRyYWNrUmVzb3VyY2Up
OwogCiAgICAgaWYgKGhhc01lZGlhQ29udHJvbHMoKSkKICAgICAgICAgbWVkaWFDb250cm9scygp
LT5jbG9zZWRDYXB0aW9uVHJhY2tzQ2hhbmdlZCgpOwpAQCAtMjk3NCw5ICszMDc1LDYgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRSZW1vdmVUcmFjayhIVAogICAgIC8vIG1lZGlhIGVsZW1l
bnQncyBsaXN0IG9mIHRleHQgdHJhY2tzLgogICAgIHJlbW92ZVRyYWNrKHRleHRUcmFjay5nZXQo
KSk7CiAKLSAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQotICAgICAgICBtZWRpYUNvbnRyb2xz
KCktPmNsb3NlZENhcHRpb25UcmFja3NDaGFuZ2VkKCk7Ci0KICAgICBzaXplX3QgaW5kZXggPSBt
X3RleHRUcmFja3NXaGVuUmVzb3VyY2VTZWxlY3Rpb25CZWdhbi5maW5kKHRleHRUcmFjay5nZXQo
KSk7CiAgICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kKQogICAgICAgICBtX3RleHRUcmFja3NXaGVu
UmVzb3VyY2VTZWxlY3Rpb25CZWdhbi5yZW1vdmUoaW5kZXgpOwpAQCAtMzMyNiw3ICszNDI0LDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpzb3VyY2VXYXNBZGRlZChIVAogICAgIC8vIGF0dHJp
YnV0ZSBhbmQgd2hvc2UgbmV0d29ya1N0YXRlIGhhcyB0aGUgdmFsdWUgTkVUV09SS19FTVBUWSwg
dGhlIHVzZXIgYWdlbnQgbXVzdCBpbnZva2UgCiAgICAgLy8gdGhlIG1lZGlhIGVsZW1lbnQncyBy
ZXNvdXJjZSBzZWxlY3Rpb24gYWxnb3JpdGhtLgogICAgIGlmIChuZXR3b3JrU3RhdGUoKSA9PSBI
VE1MTWVkaWFFbGVtZW50OjpORVRXT1JLX0VNUFRZKSB7Ci0gICAgICAgIHNjaGVkdWxlTG9hZChN
ZWRpYVJlc291cmNlKTsKKyAgICAgICAgc2NoZWR1bGVEZWxheWVkQWN0aW9uKExvYWRNZWRpYVJl
c291cmNlKTsKICAgICAgICAgbV9uZXh0Q2hpbGROb2RlVG9Db25zaWRlciA9IHNvdXJjZTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM4NjksNiArMzk2NywxMyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2FkCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xl
YXJNZWRpYVBsYXllcihpbnQgZmxhZ3MpCiB7CisjaWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tf
TUVOVSkKKyAgICBpZiAocGxhdGZvcm1UZXh0VHJhY2tNZW51KCkpIHsKKyAgICAgICAgbV9wbGF0
Zm9ybU1lbnUtPnNldENsaWVudCgwKTsKKyAgICAgICAgbV9wbGF0Zm9ybU1lbnUgPSAwOworICAg
IH0KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIHJlbW92ZUFsbEluYmFu
ZFRyYWNrcygpOwogI2VuZGlmCkBAIC0zODg0LDcgKzM5ODksNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OmNsZWFyTWVkaWFQbGF5ZXIoCiAgICAgc3RvcFBlcmlvZGljVGltZXJzKCk7CiAgICAg
bV9sb2FkVGltZXIuc3RvcCgpOwogCi0gICAgbV9wZW5kaW5nTG9hZEZsYWdzICY9IH5mbGFnczsK
KyAgICBtX3BlbmRpbmdBY3Rpb25GbGFncyAmPSB+ZmxhZ3M7CiAgICAgbV9sb2FkU3RhdGUgPSBX
YWl0aW5nRm9yU291cmNlOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQpAQCAtMzk0OCw3ICs0
MDUzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXN1bWUoKQogICAgICAgICAvLyAgTUVE
SUFfRVJSX0FCT1JURUQgd2hpbGUgdGhlIGFib3J0RXZlbnQgaXMgYmVpbmcgc2VudCwgYnV0IGNs
ZWFyZWQgaW1tZWRpYXRlbHkgYWZ0ZXJ3YXJkcykuCiAgICAgICAgIC8vIFRoaXMgYmVoYXZpb3Ig
aXMgbm90IHNwZWNpZmllZCBidXQgaXQgc2VlbXMgbGlrZSBhIHNlbnNpYmxlIHRoaW5nIHRvIGRv
LgogICAgICAgICAvLyBBcyBpdCBpcyBub3Qgc2FmZSB0byBpbW1lZGF0ZWx5IHN0YXJ0IGxvYWRp
bmcgbm93LCBsZXQncyBzY2hlZHVsZSBhIGxvYWQuCi0gICAgICAgIHNjaGVkdWxlTG9hZChNZWRp
YVJlc291cmNlKTsKKyAgICAgICAgc2NoZWR1bGVEZWxheWVkQWN0aW9uKExvYWRNZWRpYVJlc291
cmNlKTsKICAgICB9CiAKICAgICBpZiAocmVuZGVyZXIoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZpc2lvbiAxNDUyOTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAy
MDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODYsNiArODYsOSBA
QCBjbGFzcyBIVE1MTWVkaWFFbGVtZW50IDogcHVibGljIEhUTUxFbGVtCiAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQogICAgICwgcHJpdmF0ZSBUZXh0VHJhY2tDbGllbnQsIHByaXZhdGUgQ2FwdGlv
blByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyCiAjZW5kaWYKKyNpZiBVU0UoUExBVEZPUk1fVEVY
VF9UUkFDS19NRU5VKQorICAgICwgcHVibGljIFBsYXRmb3JtVGV4dFRyYWNrTWVudUNsaWVudAor
I2VuZGlmCiB7CiBwdWJsaWM6CiAgICAgTWVkaWFQbGF5ZXIqIHBsYXllcigpIGNvbnN0IHsgcmV0
dXJuIG1fcGxheWVyLmdldCgpOyB9CkBAIC0xMDgsMTEgKzExMSwxMiBAQCBwdWJsaWM6CiAgICAg
UGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwogI2VuZGlmCiAKLSAgICBlbnVt
IExvYWRUeXBlIHsKLSAgICAgICAgTWVkaWFSZXNvdXJjZSA9IDEgPDwgMCwKLSAgICAgICAgVGV4
dFRyYWNrUmVzb3VyY2UgPSAxIDw8IDEKKyAgICBlbnVtIERlbGF5ZWRBY3Rpb25UeXBlIHsKKyAg
ICAgICAgTG9hZE1lZGlhUmVzb3VyY2UgPSAxIDw8IDAsCisgICAgICAgIExvYWRUZXh0VHJhY2tS
ZXNvdXJjZSA9IDEgPDwgMSwKKyAgICAgICAgVGV4dFRyYWNrQ2hhbmdlc05vdGlmaWNhdGlvbiA9
IDEgPDwgMgogICAgIH07Ci0gICAgdm9pZCBzY2hlZHVsZUxvYWQoTG9hZFR5cGUpOworICAgIHZv
aWQgc2NoZWR1bGVEZWxheWVkQWN0aW9uKERlbGF5ZWRBY3Rpb25UeXBlKTsKICAgICAKICAgICBN
ZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBtb3ZpZUxvYWRUeXBlKCkgY29uc3Q7CiAgICAgCkBA
IC0yMjQsOCArMjI4LDExIEBAIHB1YmxpYzoKICAgICBUZXh0VHJhY2tMaXN0KiB0ZXh0VHJhY2tz
KCk7CiAgICAgQ3VlTGlzdCBjdXJyZW50bHlBY3RpdmVDdWVzKCkgY29uc3QgeyByZXR1cm4gbV9j
dXJyZW50bHlBY3RpdmVDdWVzOyB9CiAKKyAgICB2b2lkIGFkZFRyYWNrKFRleHRUcmFjayopOwog
ICAgIHZvaWQgcmVtb3ZlVHJhY2soVGV4dFRyYWNrKik7CiAgICAgdm9pZCByZW1vdmVBbGxJbmJh
bmRUcmFja3MoKTsKKyAgICB2b2lkIGNsb3NlQ2FwdGlvblRyYWNrc0NoYW5nZWQoKTsKKyAgICB2
b2lkIG5vdGlmeU1lZGlhUGxheWVyT2ZUZXh0VHJhY2tDaGFuZ2VzKCk7CiAKICAgICB2aXJ0dWFs
IHZvaWQgZGlkQWRkVHJhY2soSFRNTFRyYWNrRWxlbWVudCopOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZW1vdmVUcmFjayhIVE1MVHJhY2tFbGVtZW50Kik7CkBAIC0yMzMsNiArMjQwLDEyIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRBZGRUcmFjayhQYXNzUmVmUHRy
PEluYmFuZFRleHRUcmFja1ByaXZhdGU+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbWVk
aWFQbGF5ZXJEaWRSZW1vdmVUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+
KSBPVkVSUklERTsKIAorI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCisgICAgdmly
dHVhbCB2b2lkIHNldFNlbGVjdGVkVGV4dFRyYWNrKFBhc3NSZWZQdHI8UGxhdGZvcm1UZXh0VHJh
Y2s+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1UZXh0VHJh
Y2s+ID4gcGxhdGZvcm1UZXh0VHJhY2tzKCkgT1ZFUlJJREU7CisgICAgUGxhdGZvcm1UZXh0VHJh
Y2tNZW51SW50ZXJmYWNlKiBwbGF0Zm9ybVRleHRUcmFja01lbnUoKTsKKyNlbmRpZgorCiAgICAg
c3RydWN0IFRyYWNrR3JvdXAgewogICAgICAgICBlbnVtIEdyb3VwS2luZCB7IENhcHRpb25zQW5k
U3VidGl0bGVzLCBEZXNjcmlwdGlvbiwgQ2hhcHRlciwgTWV0YWRhdGEsIE90aGVyIH07CiAKQEAg
LTY0NCw4ICs2NTcsOCBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBtX2ZyYWdtZW50U3RhcnRUaW1l
OwogICAgIGRvdWJsZSBtX2ZyYWdtZW50RW5kVGltZTsKIAotICAgIHR5cGVkZWYgdW5zaWduZWQg
UGVuZGluZ0xvYWRGbGFnczsKLSAgICBQZW5kaW5nTG9hZEZsYWdzIG1fcGVuZGluZ0xvYWRGbGFn
czsKKyAgICB0eXBlZGVmIHVuc2lnbmVkIFBlbmRpbmdBY3Rpb25GbGFnczsKKyAgICBQZW5kaW5n
QWN0aW9uRmxhZ3MgbV9wZW5kaW5nQWN0aW9uRmxhZ3M7CiAKICAgICBib29sIG1fcGxheWluZyA6
IDE7CiAgICAgYm9vbCBtX2lzV2FpdGluZ1VudGlsTWVkaWFDYW5TdGFydCA6IDE7CkBAIC03MTgs
NiArNzMxLDEwIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKICAg
ICBSZWZQdHI8TWVkaWFLZXlzPiBtX21lZGlhS2V5czsKICNlbmRpZgorCisjaWYgVVNFKFBMQVRG
T1JNX1RFWFRfVFJBQ0tfTUVOVSkKKyAgICBSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2tNZW51SW50
ZXJmYWNlPiBtX3BsYXRmb3JtTWVudTsKKyNlbmRpZgogfTsKIAogI2lmIEVOQUJMRShWSURFT19U
UkFDSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2su
aAkocmV2aXNpb24gMTQ1Mjk3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRU
ZXh0VHJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsMTAgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgYWRkR2VuZXJpY0N1ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlKiwgR2Vu
ZXJpY0N1ZURhdGEqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkV2ViVlRUQ3VlKElu
YmFuZFRleHRUcmFja1ByaXZhdGUqLCBkb3VibGUsIGRvdWJsZSwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAKKyNpZiBVU0UoUExBVEZPUk1f
VEVYVF9UUkFDS19NRU5VKQorICAgIHZpcnR1YWwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSogcHJp
dmF0ZVRyYWNrKCkgT1ZFUlJJREUgeyByZXR1cm4gbV9wcml2YXRlLmdldCgpOyB9CisjZW5kaWYK
KwogICAgIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBtX3ByaXZhdGU7CiB9OwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCShyZXZpc2lvbiAxNDUy
OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM5Nyw2ICszOTcsMzggQEAgYm9vbCBUZXh0VHJhY2s6Omhhc0N1ZShUZXh0VHJh
Y2tDdWUqIGN1ZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorI2lmIFVTRShQTEFURk9STV9URVhU
X1RSQUNLX01FTlUpCitQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPiBUZXh0VHJhY2s6OnBs
YXRmb3JtVGV4dFRyYWNrKCkKK3sKKyAgICBpZiAobV9wbGF0Zm9ybVRleHRUcmFjaykKKyAgICAg
ICAgcmV0dXJuIG1fcGxhdGZvcm1UZXh0VHJhY2s7CisKKyAgICBQbGF0Zm9ybVRleHRUcmFjazo6
VHJhY2tLaW5kIGtpbmQgPSBQbGF0Zm9ybVRleHRUcmFjazo6Q2FwdGlvbjsKKyAgICBpZiAobV9r
aW5kID09IHN1YnRpdGxlc0tleXdvcmQoKSkKKyAgICAgICAga2luZCA9IFBsYXRmb3JtVGV4dFRy
YWNrOjpTdWJ0aXRsZTsKKyAgICBlbHNlIGlmIChtX2tpbmQgPT0gY2FwdGlvbnNLZXl3b3JkKCkp
CisgICAgICAgIGtpbmQgPSBQbGF0Zm9ybVRleHRUcmFjazo6Q2FwdGlvbjsKKyAgICBlbHNlIGlm
IChtX2tpbmQgPT0gZGVzY3JpcHRpb25zS2V5d29yZCgpKQorICAgICAgICBraW5kID0gUGxhdGZv
cm1UZXh0VHJhY2s6OkRlc2NyaXB0aW9uOworICAgIGVsc2UgaWYgKG1fa2luZCA9PSBjaGFwdGVy
c0tleXdvcmQoKSkKKyAgICAgICAga2luZCA9IFBsYXRmb3JtVGV4dFRyYWNrOjpDaGFwdGVyOwor
ICAgIGVsc2UgaWYgKG1fa2luZCA9PSBtZXRhZGF0YUtleXdvcmQoKSkKKyAgICAgICAga2luZCA9
IFBsYXRmb3JtVGV4dFRyYWNrOjpNZXRhRGF0YTsKKworICAgIFBsYXRmb3JtVGV4dFRyYWNrOjpU
cmFja1R5cGUgdHlwZSA9IFBsYXRmb3JtVGV4dFRyYWNrOjpPdXRPZkJhbmQ7CisgICAgaWYgKG1f
dHJhY2tUeXBlID09IFRyYWNrRWxlbWVudCkKKyAgICAgICAgdHlwZSA9IFBsYXRmb3JtVGV4dFRy
YWNrOjpPdXRPZkJhbmQ7CisgICAgZWxzZSBpZiAobV90cmFja1R5cGUgPT0gQWRkVHJhY2spCisg
ICAgICAgIHR5cGUgPSBQbGF0Zm9ybVRleHRUcmFjazo6U2NyaXB0OworICAgIGVsc2UgaWYgKG1f
dHJhY2tUeXBlID09IEluQmFuZCkKKyAgICAgICAgdHlwZSA9IFBsYXRmb3JtVGV4dFRyYWNrOjpJ
bkJhbmQ7CisKKyAgICBtX3BsYXRmb3JtVGV4dFRyYWNrID0gUGxhdGZvcm1UZXh0VHJhY2s6OmNy
ZWF0ZSh0aGlzLCBtX2xhYmVsLCBtX2xhbmd1YWdlLCBraW5kLCB0eXBlKTsKKworICAgIHJldHVy
biBtX3BsYXRmb3JtVGV4dFRyYWNrOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgJKHJl
dmlzaW9uIDE0NTI5NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDEwIEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIFVTRShQTEFURk9S
TV9URVhUX1RSQUNLX01FTlUpCisjaW5jbHVkZSAiUGxhdGZvcm1UZXh0VHJhY2suaCIKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CkBAIC01
Myw3ICs1NywxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1
ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pID0gMDsKIH07CiAKLWNsYXNz
IFRleHRUcmFjayA6IHB1YmxpYyBUcmFja0Jhc2UgeworY2xhc3MgVGV4dFRyYWNrIDogcHVibGlj
IFRyYWNrQmFzZQorI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCisgICAgLCBwdWJs
aWMgUGxhdGZvcm1UZXh0VHJhY2tDbGllbnQKKyNlbmRpZgorICAgIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxUZXh0VHJhY2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBr
aW5kLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1
YWdlKQogICAgIHsKQEAgLTEyNSw2ICsxMzMsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCByZW1v
dmVBbGxDdWVzKCk7CiAKKyNpZiBVU0UoUExBVEZPUk1fVEVYVF9UUkFDS19NRU5VKQorICAgIFBh
c3NSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+IHBsYXRmb3JtVGV4dFRyYWNrKCk7CisjZW5kaWYK
KwogcHJvdGVjdGVkOgogICAgIFRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGV4
dFRyYWNrQ2xpZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBraW5kLCBjb25zdCBBdG9taWNTdHJp
bmcmIGxhYmVsLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlLCBUZXh0VHJhY2tUeXBlKTsK
IApAQCAtMTMyLDYgKzE0NCwxMyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgVGV4dFRy
YWNrQ3VlTGlzdCogZW5zdXJlVGV4dFRyYWNrQ3VlTGlzdCgpOworCisjaWYgVVNFKFBMQVRGT1JN
X1RFWFRfVFJBQ0tfTUVOVSkKKyAgICB2aXJ0dWFsIFRleHRUcmFjayogcHVibGljVHJhY2soKSBP
VkVSUklERSB7IHJldHVybiB0aGlzOyB9CisKKyAgICBSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+
IG1fcGxhdGZvcm1UZXh0VHJhY2s7CisjZW5kaWYKKwogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1f
bWVkaWFFbGVtZW50OwogICAgIEF0b21pY1N0cmluZyBtX2tpbmQ7CiAgICAgQXRvbWljU3RyaW5n
IG1fbGFiZWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwCShyZXZpc2lvbiAxNDUyOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExMjAsNyAr
MTEyMCwxOSBAQCB2b2lkIE1lZGlhUGxheWVyOjpzZXRUZXh0VHJhY2tSZXByZXNlbnRhCiB7CiAg
ICAgbV9wcml2YXRlLT5zZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihyZXByZXNlbnRhdGlvbik7
CiB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpZiBVU0UoUExB
VEZPUk1fVEVYVF9UUkFDS19NRU5VKQorYm9vbCBNZWRpYVBsYXllcjo6aW1wbGVtZW50c1RleHRU
cmFja0NvbnRyb2xzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5pbXBsZW1lbnRz
VGV4dFRyYWNrQ29udHJvbHMoKTsKK30KKworUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFja01l
bnVJbnRlcmZhY2U+IE1lZGlhUGxheWVyOjp0ZXh0VHJhY2tNZW51KCkKK3sKKyAgICByZXR1cm4g
bV9wcml2YXRlLT50ZXh0VHJhY2tNZW51KCk7Cit9CisjZW5kaWYgLy8gVVNFKFBMQVRGT1JNX1RF
WFRfVFJBQ0tfTUVOVSkKIAogdm9pZCBNZWRpYVBsYXllcjo6cmVzZXRNZWRpYUVuZ2luZXMoKQog
ewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5oCShyZXZpc2lvbiAxNDUyOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDks
IDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OCw2ICs0OCwxMCBAQAogI2luY2x1
ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNlbmRpZgogCisjaWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJB
Q0tfTUVOVSkKKyNpbmNsdWRlICJQbGF0Zm9ybVRleHRUcmFja01lbnUuaCIKKyNlbmRpZgorCiBP
QkpDX0NMQVNTIEFWUGxheWVyOwogT0JKQ19DTEFTUyBRVE1vdmllOwogCkBAIC00MzcsNiArNDQx
LDExIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIHJlc2V0TWVkaWFFbmdpbmVzKCk7CiAK
KyNpZiBVU0UoUExBVEZPUk1fVEVYVF9UUkFDS19NRU5VKQorICAgIGJvb2wgaW1wbGVtZW50c1Rl
eHRUcmFja0NvbnRyb2xzKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFj
a01lbnVJbnRlcmZhY2U+IHRleHRUcmFja01lbnUoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAg
IE1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50Kik7CiAgICAgdm9pZCBsb2FkV2l0aE5leHRN
ZWRpYUVuZ2luZShNZWRpYVBsYXllckZhY3RvcnkqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCShyZXZpc2lv
biAxNDUyOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
clByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEludFJlY3Q7
CiBjbGFzcyBJbnRTaXplOworY2xhc3MgUGxhdGZvcm1UZXh0VHJhY2s7CiAKIGNsYXNzIE1lZGlh
UGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xODAs
NiArMTgxLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lk
IHNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1JlcHJlc2VudGF0aW9uKikgeyB9
CiAjZW5kaWYKKworI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCisgICAgdmlydHVh
bCBib29sIGltcGxlbWVudHNUZXh0VHJhY2tDb250cm9scygpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrTWVudUludGVyZmFj
ZT4gdGV4dFRyYWNrTWVudSgpIHsgcmV0dXJuIDA7IH0KKyNlbmRpZgorCiB9OwogCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRleHRUcmFjay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4
dFRyYWNrLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QbGF0Zm9ybVRleHRUcmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFBsYXRmb3JtVGV4dFRyYWNrX2gKKyNkZWZpbmUgUGxhdGZvcm1U
ZXh0VHJhY2tfaAorCisjaWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkKKworI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGV4dFRyYWNrOworY2xhc3MgSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZTsKKworY2xhc3MgUGxhdGZvcm1UZXh0VHJhY2tDbGllbnQgeworcHVibGlj
OgorICAgIHZpcnR1YWwgflBsYXRmb3JtVGV4dFRyYWNrQ2xpZW50KCkgeyB9CisgICAgCisgICAg
dmlydHVhbCBUZXh0VHJhY2sqIHB1YmxpY1RyYWNrKCkgPSAwOworICAgIHZpcnR1YWwgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZSogcHJpdmF0ZVRyYWNrKCkgeyByZXR1cm4gMDsgfQorfTsKKworY2xh
c3MgUGxhdGZvcm1UZXh0VHJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybVRleHRUcmFj
az4geworcHVibGljOgorICAgIGVudW0gVHJhY2tLaW5kIHsgU3VidGl0bGUgPSAwLCBDYXB0aW9u
ID0gMSwgRGVzY3JpcHRpb24gPSAyLCBDaGFwdGVyID0gMywgTWV0YURhdGEgPSA0IH07CisgICAg
ZW51bSBUcmFja1R5cGUgeyBJbkJhbmQgPSAwLCBPdXRPZkJhbmQgPSAxLCBTY3JpcHQgPSAyIH07
CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gY3JlYXRlKFBsYXRm
b3JtVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0
cmluZyYgbGFuZ3VhZ2UsIFRyYWNrS2luZCBraW5kLCBUcmFja1R5cGUgdHlwZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1UZXh0VHJhY2soY2xpZW50LCBsYWJl
bCwgbGFuZ3VhZ2UsIGtpbmQsIHR5cGUpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5QbGF0Zm9y
bVRleHRUcmFjaygpIHsgfQorICAgIAorICAgIFRyYWNrVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9CisgICAgVHJhY2tLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7
IH0KKyAgICBTdHJpbmcgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX2xhYmVsOyB9CisgICAgU3Ry
aW5nIGxhbmd1YWdlKCkgY29uc3QgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQorICAgIFBsYXRmb3Jt
VGV4dFRyYWNrQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQorICAg
IAorcHJvdGVjdGVkOgorICAgIFBsYXRmb3JtVGV4dFRyYWNrKFBsYXRmb3JtVGV4dFRyYWNrQ2xp
ZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2Us
IFRyYWNrS2luZCBraW5kLCBUcmFja1R5cGUgdHlwZSkKKyAgICAgICAgOiBtX2xhYmVsKGxhYmVs
KQorICAgICAgICAsIG1fbGFuZ3VhZ2UobGFuZ3VhZ2UpCisgICAgICAgICwgbV9raW5kKGtpbmQp
CisgICAgICAgICwgbV90eXBlKHR5cGUpCisgICAgICAgICwgbV9jbGllbnQoY2xpZW50KQorICAg
IHsKKyAgICB9CisKKyAgICBTdHJpbmcgbV9sYWJlbDsKKyAgICBTdHJpbmcgbV9sYW5ndWFnZTsK
KyAgICBUcmFja0tpbmQgbV9raW5kOworICAgIFRyYWNrVHlwZSBtX3R5cGU7CisgICAgUGxhdGZv
cm1UZXh0VHJhY2tDbGllbnQqIG1fY2xpZW50OworfTsKKworfQorCisjZW5kaWYKKworI2VuZGlm
IC8vIFBsYXRmb3JtVGV4dFRyYWNrX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrTWVudS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrTWVudS5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2tN
ZW51LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgUGxhdGZvcm1UZXh0VHJhY2tNZW51X2gKKyNkZWZpbmUgUGxhdGZvcm1UZXh0VHJhY2tNZW51
X2gKKworI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCisKKyNpbmNsdWRlICJQbGF0
Zm9ybVRleHRUcmFjay5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGxhdGZv
cm1UZXh0VHJhY2s7CisKK2NsYXNzIFBsYXRmb3JtVGV4dFRyYWNrTWVudUNsaWVudCB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+UGxhdGZvcm1UZXh0VHJhY2tNZW51Q2xpZW50KCkgeyB9CisgICAg
CisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkVGV4dFRyYWNrKFBhc3NSZWZQdHI8UGxhdGZv
cm1UZXh0VHJhY2s+KSA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtVGV4
dFRyYWNrPiA+IHBsYXRmb3JtVGV4dFRyYWNrcygpID0gMDsKK307CisKK2NsYXNzIFBsYXRmb3Jt
VGV4dFRyYWNrTWVudUludGVyZmFjZSAgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybVRleHRU
cmFja01lbnVJbnRlcmZhY2U+IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBQbGF0Zm9ybVRleHRU
cmFja01lbnVJbnRlcmZhY2UoKSB7IH0KKyAgICB2aXJ0dWFsIH5QbGF0Zm9ybVRleHRUcmFja01l
bnVJbnRlcmZhY2UoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCB0cmFja3NEaWRDaGFuZ2UoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHRyYWNrV2FzU2VsZWN0ZWQoUGFzc1JlZlB0cjxQbGF0Zm9y
bVRleHRUcmFjaz4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFBsYXRmb3JtVGV4
dFRyYWNrTWVudUNsaWVudCopID0gMDsKK307CisKK30KKworI2VuZGlmIC8vIFVTRShQTEFURk9S
TV9URVhUX1RSQUNLX01FTlUpCisjZW5kaWYgLy8gUGxhdGZvcm1UZXh0VHJhY2tNZW51X2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>