<?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>130424</bug_id>
          
          <creation_ts>2014-03-18 14:39:21 -0700</creation_ts>
          <short_desc>Make image controls menu work in WK2</short_desc>
          <delta_ts>2014-03-18 16:55:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>sergio</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>991881</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-03-18 14:39:21 -0700</bug_when>
    <thetext>Make image controls menu work in WK2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991882</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-03-18 14:39:47 -0700</bug_when>
    <thetext>&lt;rdar://problem/16294412&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991884</commentid>
    <comment_count>2</comment_count>
      <attachid>227110</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-03-18 14:44:06 -0700</bug_when>
    <thetext>Created attachment 227110
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991901</commentid>
    <comment_count>3</comment_count>
      <attachid>227115</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-03-18 15:03:31 -0700</bug_when>
    <thetext>Created attachment 227115
Patch v2 - Build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991941</commentid>
    <comment_count>4</comment_count>
      <attachid>227127</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-03-18 16:18:40 -0700</bug_when>
    <thetext>Created attachment 227127
Patch v3 - More build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991942</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-18 16:21:22 -0700</bug_when>
    <thetext>Attachment 227127 did not pass style-queue:


ERROR: Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp:57:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 1 in 22 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>991944</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-03-18 16:25:05 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Attachment 227127 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp:57:  Tab found; better to use spaces  [whitespace/tab] [1]
&gt; Total errors found: 1 in 22 files
&gt; 

Whoops.  Fixed locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991947</commentid>
    <comment_count>7</comment_count>
      <attachid>227127</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-18 16:43:59 -0700</bug_when>
    <thetext>Comment on attachment 227127
Patch v3 - More build fixes

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

&gt; Source/WebKit2/ChangeLog:47
&gt; +        (-[WKSharingServicePickerDelegate WebKit::]):

WebKit:: :|

&gt; Source/WebKit2/Platform/mac/SharedMemoryMac.cpp:57
&gt; +void SharedMemory::Handle::clear()

maybe “release” is a better name than “clear”… I don’t know. More evident that you’re losing something.

&gt; Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:177
&gt; +    // FIXME: What do we do if there are multiple items?

Please remove my silly comment (for now).

&gt; Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:193
&gt; +- (NSRect)sharingService:(NSSharingService *)sharingService sourceFrameOnScreenForShareItem:(id &lt;NSPasteboardWriting&gt;)item
&gt; +{
&gt; +    notImplemented();
&gt; +    return NSZeroRect;
&gt; +}
&gt; +
&gt; +- (NSImage *)sharingService:(NSSharingService *)sharingService transitionImageForShareItem:(id &lt;NSPasteboardWriting&gt;)item contentRect:(NSRect *)contentRect
&gt; +{
&gt; +    notImplemented();
&gt; +    return nil;
&gt; +}

I think we can elide these.

&gt; Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:354
&gt; +    NSMenu* menu = m_servicesMenu ? m_servicesMenu.get() : [m_popup menu];

star on the wrong side

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:3088
&gt; +    m_contextMenu-&gt;replaceControlledImage(bitmap-&gt;createImage());

what happens in createImage if bitmapHandle.isNull()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991952</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-03-18 16:55:26 -0700</bug_when>
    <thetext>Addressed most feedback in most obvious ways possible.

https://trac.webkit.org/changeset/165856</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227110</attachid>
            <date>2014-03-18 14:44:06 -0700</date>
            <delta_ts>2014-03-18 15:03:31 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>27033</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAxM2JkZjg4Li5jODRmYzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUg
QEAKKzIwMTQtMDMtMTggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIE1ha2UgaW1hZ2UgY29udHJvbHMgbWVudSB3b3JrIGluIFdLMgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMTYyOTQ0MTI+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTMwNDI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9tYWMv
U2hhcmVkTWVtb3J5TWFjLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5k
bGU6On5IYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZTo6Y2xl
YXIpOgorCisgICAgICAgICogU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpDb250ZXh0TWVudUNvbnRleHREYXRhOjpDb250ZXh0TWVudUNvbnRleHRE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDb250ZXh0RGF0YTo6b3BlcmF0b3I9
KToKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDb250ZXh0RGF0YTo6ZW5jb2RlKToKKyAg
ICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDb250ZXh0RGF0YTo6ZGVjb2RlKToKKyAgICAgICAg
KiBTaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oOgorICAgICAgICAoV2ViS2l0OjpDb250
ZXh0TWVudUNvbnRleHREYXRhOjpjb250cm9sbGVkSW1hZ2VIYW5kbGUpOgorCisgICAgICAgICog
U2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlOjpjbGVhcik6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0TWVudVByb3h5Lmg6CisKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjppbnRlcm5hbFNob3dDb250ZXh0TWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVwbGFjZUNvbnRyb2xsZWRJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oOgorCisgICAgICAgIEFkZCBhIHNoYXJpbmcgc2VydmljZSBjb250ZXh0IG1lbnUg
dGhhdCBsaXZlcyBzaWRlLWJ5LXNpZGUgd2l0aCB0aGUgbm9ybWFsIG9uZToKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW06CisgICAgICAgICgrW1dLU2hhcmluZ1Nl
cnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlXSk6
CisgICAgICAgICgtW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBXZWJLaXQ6Ol0pOgor
ICAgICAgICAoLVtXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgc2V0TWVudVByb3h5Oldl
YktpdDo6XSk6CisgICAgICAgICgtW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzZXRQ
aWNrZXI6XSk6CisgICAgICAgICgtW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFy
aW5nU2VydmljZVBpY2tlcjpkZWxlZ2F0ZUZvclNoYXJpbmdTZXJ2aWNlOl0pOgorICAgICAgICAo
LVtXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgc2hhcmluZ1NlcnZpY2U6d2lsbFNoYXJl
SXRlbXM6XSk6CisgICAgICAgICgtW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFy
aW5nU2VydmljZTpkaWRTaGFyZUl0ZW1zOl0pOgorICAgICAgICAoLVtXS1NoYXJpbmdTZXJ2aWNl
UGlja2VyRGVsZWdhdGUgc2hhcmluZ1NlcnZpY2U6c291cmNlRnJhbWVPblNjcmVlbkZvclNoYXJl
SXRlbTpdKToKKyAgICAgICAgKC1bV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIHNoYXJp
bmdTZXJ2aWNlOnRyYW5zaXRpb25JbWFnZUZvclNoYXJlSXRlbTpjb250ZW50UmVjdDpdKToKKyAg
ICAgICAgKC1bV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIHNoYXJpbmdTZXJ2aWNlOnNv
dXJjZVdpbmRvd0ZvclNoYXJlSXRlbXM6c2hhcmluZ0NvbnRlbnRTY29wZTpdKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjpzZXR1cEltYWdlU2Vy
dmljZXNNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Y2xl
YXJJbWFnZVNlcnZpY2VzTWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJv
eHlNYWM6OnBvcHVsYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1h
Yzo6c2hvd0NvbnRleHRNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94
eU1hYzo6d2luZG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6
cmVwbGFjZUNvbnRyb2xsZWRJbWFnZSk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29udGV4dE1lbnUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudTo6c2hv
dyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51OjpyZXBsYWNlQ29udHJvbGxlZElt
YWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuaDoKKwor
ICAgICAgICBUZWFjaCB0aGUgV2ViUHJvY2VzcyBob3cgdG8gYWNjZXB0IHRoZSByZXBsYWNlZCBp
bWFnZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxhY2VDb250cm9sbGVkSW1hZ2UpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTQtMDMtMTggIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiBWaXNpdGVkIGxpbmsgY29s
b3Jpbmcgc2VlbXMgdG8gYmUgY29tcGxldGVseSBicm9rZW4gaW4gdGlwIG9mIHRyZWUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggZWZhNWYwMC4uOWUyNWQwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAgLTU3LDYgKzU3LDggQEAgcHVi
bGljOgogCiAgICAgICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CiAKKyAgICAgICAgdm9pZCBjbGVh
cigpOworCiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJikgY29uc3Q7
CiAgICAgICAgIHN0YXRpYyBib29sIGRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYsIEhhbmRs
ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU2hhcmVkTWVt
b3J5TWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9TaGFyZWRNZW1vcnlNYWMu
Y3BwCmluZGV4IDQ2YTQzZjMuLmM3NzRhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL21hYy9TaGFyZWRNZW1vcnlNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL21hYy9TaGFyZWRNZW1vcnlNYWMuY3BwCkBAIC00Niw4ICs0Niw3IEBAIFNoYXJlZE1lbW9y
eTo6SGFuZGxlOjpIYW5kbGUoKQogCiBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6fkhhbmRsZSgpCiB7
Ci0gICAgaWYgKG1fcG9ydCkKLSAgICAgICAgbWFjaF9wb3J0X2RlYWxsb2NhdGUobWFjaF90YXNr
X3NlbGYoKSwgbV9wb3J0KTsKKyAgICBjbGVhcigpOwogfQogCiBib29sIFNoYXJlZE1lbW9yeTo6
SGFuZGxlOjppc051bGwoKSBjb25zdApAQCAtNTUsNiArNTQsMTUgQEAgYm9vbCBTaGFyZWRNZW1v
cnk6OkhhbmRsZTo6aXNOdWxsKCkgY29uc3QKICAgICByZXR1cm4gIW1fcG9ydDsKIH0KIAordm9p
ZCBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6Y2xlYXIoKQoreworICAgIGlmIChtX3BvcnQpCisgICAg
ICAgIG1hY2hfcG9ydF9kZWFsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIG1fcG9ydCk7CisKKyAg
ICBtX3BvcnQgPSBNQUNIX1BPUlRfTlVMTDsKKyAgICBtX3NpemUgPSAwOworfQorCiB2b2lkIFNo
YXJlZE1lbW9yeTo6SGFuZGxlOjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9zaXplKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRh
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcApp
bmRleCBkNmZhYWQ2Ny4uZGNmNzNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b250ZXh0TWVudUNvbnRleHREYXRhLmNwcApAQCAtMzEsMzEgKzMxLDU1IEBACiAKICNpbmNsdWRl
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51
Q29udGV4dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogQ29udGV4dE1lbnVD
b250ZXh0RGF0YTo6Q29udGV4dE1lbnVDb250ZXh0RGF0YSgpCi0jaWYgRU5BQkxFKElNQUdFX0NP
TlRST0xTKQotICAgIDogbV9pc0ltYWdlQ29udHJvbChmYWxzZSkKLSNlbmRpZgogewogfQogCiBD
b250ZXh0TWVudUNvbnRleHREYXRhOjpDb250ZXh0TWVudUNvbnRleHREYXRhKGNvbnN0IENvbnRl
eHRNZW51Q29udGV4dCYgY29udGV4dCkKICAgICA6IG1fd2ViSGl0VGVzdFJlc3VsdERhdGEoV2Vi
SGl0VGVzdFJlc3VsdDo6RGF0YShjb250ZXh0LmhpdFRlc3RSZXN1bHQoKSkpCit7CiAjaWYgRU5B
QkxFKElNQUdFX0NPTlRST0xTKQotICAgICwgbV9pc0ltYWdlQ29udHJvbChjb250ZXh0LmNvbnRy
b2xsZWRJbWFnZSgpKQorICAgIEltYWdlKiBpbWFnZSA9IGNvbnRleHQuY29udHJvbGxlZEltYWdl
KCk7CisgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1h
Z2UtPnNpemUoKSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKKyAgICBiaXRtYXAt
PmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpLT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIEludFBvaW50KCkpOworICAgIGJpdG1hcC0+Y3JlYXRlSGFuZGxlKG1fY29udHJvbGxl
ZEltYWdlSGFuZGxlKTsKICNlbmRpZgorfQorCitDb250ZXh0TWVudUNvbnRleHREYXRhOjpDb250
ZXh0TWVudUNvbnRleHREYXRhKGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmIG90aGVyKQog
eworICAgICp0aGlzID0gb3RoZXI7Cit9CisKK0NvbnRleHRNZW51Q29udGV4dERhdGEmIENvbnRl
eHRNZW51Q29udGV4dERhdGE6Om9wZXJhdG9yPShjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRh
JiBvdGhlcikKK3sKKyAgICBtX3dlYkhpdFRlc3RSZXN1bHREYXRhID0gb3RoZXIubV93ZWJIaXRU
ZXN0UmVzdWx0RGF0YTsKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAgbV9jb250cm9s
bGVkSW1hZ2VIYW5kbGUuY2xlYXIoKTsKKworICAgIGlmICghb3RoZXIubV9jb250cm9sbGVkSW1h
Z2VIYW5kbGUuaXNOdWxsKCkpIHsKKyAgICAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0
bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUob3RoZXIubV9jb250cm9sbGVkSW1hZ2VIYW5k
bGUpOworICAgICAgICBiaXRtYXAtPmNyZWF0ZUhhbmRsZShtX2NvbnRyb2xsZWRJbWFnZUhhbmRs
ZSk7CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gKnRoaXM7CiB9CiAKIHZvaWQgQ29udGV4
dE1lbnVDb250ZXh0RGF0YTo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogewogICAgIGVuY29kZXIgPDwgbV93ZWJIaXRUZXN0UmVzdWx0RGF0YTsKICNpZiBFTkFC
TEUoSU1BR0VfQ09OVFJPTFMpCi0gICAgZW5jb2RlciA8PCBtX2lzSW1hZ2VDb250cm9sOworICAg
IGVuY29kZXIgPDwgbV9jb250cm9sbGVkSW1hZ2VIYW5kbGU7CiAjZW5kaWYKIH0KIApAQCAtNjUs
NyArODksNyBAQCBib29sIENvbnRleHRNZW51Q29udGV4dERhdGE6OmRlY29kZShJUEM6OkFyZ3Vt
ZW50RGVjb2RlciYgZGVjb2RlciwgQ29udGV4dE1lbnVDbwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIAogI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGNvbnRleHRNZW51Q29udGV4dERhdGEubV9pc0ltYWdlQ29udHJvbCkpCisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShjb250ZXh0TWVudUNvbnRleHREYXRhLm1fY29udHJvbGxlZEltYWdl
SGFuZGxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oCmluZGV4IDg5NDkzMzkuLjZjNmFl
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHRE
YXRhLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEu
aApAQCAtMjksNiArMjksNyBAQAogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAKKyNpbmNs
dWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJXZWJIaXRUZXN0UmVzdWx0LmgiCiAK
IG5hbWVzcGFjZSBJUEMgewpAQCAtNDYsMTEgKzQ3LDE0IEBAIGNsYXNzIENvbnRleHRNZW51Q29u
dGV4dERhdGEgewogcHVibGljOgogICAgIENvbnRleHRNZW51Q29udGV4dERhdGEoKTsKICAgICBD
b250ZXh0TWVudUNvbnRleHREYXRhKGNvbnN0IFdlYkNvcmU6OkNvbnRleHRNZW51Q29udGV4dCYp
OworCisgICAgQ29udGV4dE1lbnVDb250ZXh0RGF0YShjb25zdCBDb250ZXh0TWVudUNvbnRleHRE
YXRhJik7CisgICAgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYgb3BlcmF0b3I9KGNvbnN0IENvbnRl
eHRNZW51Q29udGV4dERhdGEmKTsKICAgICAKICAgICBjb25zdCBXZWJIaXRUZXN0UmVzdWx0OjpE
YXRhJiB3ZWJIaXRUZXN0UmVzdWx0RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViSGl0VGVzdFJl
c3VsdERhdGE7IH0KIAogI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKLSAgICBib29sIGlzSW1h
Z2VDb250cm9sKCkgY29uc3QgeyByZXR1cm4gbV9pc0ltYWdlQ29udHJvbDsgfQorICAgIGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBjb250cm9sbGVkSW1hZ2VIYW5kbGUoKSBjb25zdCB7
IHJldHVybiBtX2NvbnRyb2xsZWRJbWFnZUhhbmRsZTsgfQogI2VuZGlmCiAKICAgICB2b2lkIGVu
Y29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYpIGNvbnN0OwpAQCAtNjEsNyArNjUsNyBAQCBwcml2
YXRlOgogICAgIFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEgbV93ZWJIaXRUZXN0UmVzdWx0RGF0YTsK
IAogI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKLSAgICBib29sIG1faXNJbWFnZUNvbnRyb2w7
CisgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgbV9jb250cm9sbGVkSW1hZ2VIYW5kbGU7CiAj
ZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVC
aXRtYXAuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKaW5k
ZXggOWViNDc1OS4uMmEyOGNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1No
YXJlYWJsZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJp
dG1hcC5jcHAKQEAgLTU3LDYgKzU3LDEzIEBAIGJvb2wgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6
OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgSGFuZGxlJiBoYW5kCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OmNsZWFyKCkK
K3sKKyAgICBtX2hhbmRsZS5jbGVhcigpOworICAgIG1fc2l6ZSA9IEludFNpemUoKTsKKyAgICBt
X2ZsYWdzID0gRmxhZzo6Tm9GbGFnczsKK30KKwogUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdz
KQogewogICAgIHNpemVfdCBudW1CeXRlcyA9IG51bUJ5dGVzRm9yU2l6ZShzaXplKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAppbmRleCA0NzE2MWYwLi5hMTk2ZGI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCkBAIC02Myw2ICs2Myw4IEBA
IHB1YmxpYzoKIAogICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxl
LmlzTnVsbCgpOyB9CiAKKyAgICAgICAgdm9pZCBjbGVhcigpOworCiAgICAgICAgIHZvaWQgZW5j
b2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyBib29sIGRl
Y29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYsIEhhbmRsZSYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVQcm94eS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuaAppbmRleCAwOTg1NTJkLi41NTQ2ZTVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVudVByb3h5LmgK
QEAgLTM2LDEzICszNiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCitjbGFzcyBDb250ZXh0TWVudUNvbnRleHREYXRhOwogY2xhc3MgV2ViQ29udGV4dE1l
bnVJdGVtRGF0YTsKIAogY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFdlYkNvbnRleHRNZW51UHJveHk+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJDb250
ZXh0TWVudVByb3h5KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+
JiBpdGVtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mLCBj
b25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoaWRl
Q29udGV4dE1lbnUoKSA9IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZjAzYWNmZS4uNDQ5ZGE0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTMyOTMsMjIgKzMyOTMsMzIgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmludGVybmFsU2hvd0NvbnRleHRNZW51KGNvbnN0IEludFBvaW50JiBt
ZW51TG9jYXRpb24sIGNvbnN0IEMKICAgICAvLyBVbmxlc3MgdGhpcyBpcyBhbiBpbWFnZSBjb250
cm9sLCBnaXZlIHRoZSBQYWdlQ29udGV4dE1lbnVDbGllbnQgb25lIGxhc3Qgc3dpcGUgYXQgY2hh
bmdpbmcgdGhlIG1lbnUuCiAgICAgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IGl0ZW1z
OwogICAgIGJvb2wgdXNlUHJvcG9zZWRJdGVtcyA9IHRydWU7Ci0KKyAgICBib29sIGFza0NsaWVu
dFRvQ2hhbmdlTWVudSA9IHRydWU7CiAjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQotICAgIGlm
ICghY29udGV4dE1lbnVDb250ZXh0RGF0YS5pc0ltYWdlQ29udHJvbCgpICYmIG1fY29udGV4dE1l
bnVDbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KHRoaXMsIHByb3Bvc2VkSXRl
bXMsIGl0ZW1zLCBjb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCks
IHVzZXJEYXRhLmdldCgpKSkgewotI2Vsc2UKLSAgICBpZiAobV9jb250ZXh0TWVudUNsaWVudC5n
ZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUodGhpcywgcHJvcG9zZWRJdGVtcywgaXRlbXMs
IGNvbnRleHRNZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKSwgdXNlckRhdGEu
Z2V0KCkpKSB7CisgICAgaWYgKCFjb250ZXh0TWVudUNvbnRleHREYXRhLmNvbnRyb2xsZWRJbWFn
ZUhhbmRsZSgpLmlzTnVsbCgpKQorICAgICAgICBhc2tDbGllbnRUb0NoYW5nZU1lbnUgPSBmYWxz
ZTsKICNlbmRpZgorCisgICAgaWYgKGFza0NsaWVudFRvQ2hhbmdlTWVudSAmJiBtX2NvbnRleHRN
ZW51Q2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSh0aGlzLCBwcm9wb3NlZEl0
ZW1zLCBpdGVtcywgY29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgp
LCB1c2VyRGF0YS5nZXQoKSkpCiAgICAgICAgIHVzZVByb3Bvc2VkSXRlbXMgPSBmYWxzZTsKLSAg
ICB9CiAgICAgCiAgICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBpdGVt
c1RvU2hvdyA9IHVzZVByb3Bvc2VkSXRlbXMgPyBwcm9wb3NlZEl0ZW1zIDogaXRlbXM7CiAgICAg
aWYgKCFtX2NvbnRleHRNZW51Q2xpZW50LnNob3dDb250ZXh0TWVudSh0aGlzLCBtZW51TG9jYXRp
b24sIGl0ZW1zVG9TaG93KSkKLSAgICAgICAgbV9hY3RpdmVDb250ZXh0TWVudS0+c2hvd0NvbnRl
eHRNZW51KG1lbnVMb2NhdGlvbiwgaXRlbXNUb1Nob3cpOwotICAgIAorICAgICAgICBtX2FjdGl2
ZUNvbnRleHRNZW51LT5zaG93Q29udGV4dE1lbnUobWVudUxvY2F0aW9uLCBpdGVtc1RvU2hvdywg
Y29udGV4dE1lbnVDb250ZXh0RGF0YSk7CisKICAgICBtX2NvbnRleHRNZW51Q2xpZW50LmNvbnRl
eHRNZW51RGlzbWlzc2VkKHRoaXMpOwogfQogCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQor
dm9pZCBXZWJQYWdlUHJveHk6OnJlcGxhY2VDb250cm9sbGVkSW1hZ2UoUGFzc1JlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IG5ld0JpdG1hcCkKK3sKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBi
aXRtYXAgPSBuZXdCaXRtYXA7CisgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgYml0bWFwSGFu
ZGxlOworICAgIGJpdG1hcC0+Y3JlYXRlSGFuZGxlKGJpdG1hcEhhbmRsZSk7CisgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlQ29udHJvbGxlZEltYWdlKGJpdG1h
cEhhbmRsZSksIG1fcGFnZUlEKTsKK30KKyNlbmRpZgorCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29u
dGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkK
IHsKICAgICAvLyBBcHBsaWNhdGlvbiBjdXN0b20gaXRlbXMgZG9uJ3QgbmVlZCB0byByb3VuZC10
cmlwIHRocm91Z2ggdG8gV2ViQ29yZSBpbiB0aGUgV2ViUHJvY2Vzcy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA2MjVjNmM1Li4yMzJhMjZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC05MjAsNiArOTIwLDEwIEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgdGFrZVRodW1ibmFpbFNuYXBzaG90KEltYWdlQ2FsbGJhY2s6OkNhbGxi
YWNrRnVuY3Rpb24pOwogCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorICAgIHZvaWQgcmVw
bGFjZUNvbnRyb2xsZWRJbWFnZShQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4pOworI2VuZGlm
CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJv
eHkmLCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDb25maWd1cmF0aW9uJik7CiAgICAg
dm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLmgKaW5kZXggNGZhYTNlZC4uNWJhOWJi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVu
dVByb3h5TWFjLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0
TWVudVByb3h5TWFjLmgKQEAgLTMyLDEwICszMiwxMiBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KIAogT0JKQ19DTEFTUyBOU1BvcFVwQnV0dG9uQ2VsbDsKK09CSkNfQ0xBU1MgTlNXaW5k
b3c7CiBPQkpDX0NMQVNTIFdLVmlldzsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFNo
YXJlYWJsZUJpdG1hcDsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgV2ViQ29udGV4dE1l
bnVQcm94eU1hYyA6IHB1YmxpYyBXZWJDb250ZXh0TWVudVByb3h5IHsKQEAgLTQ2LDE3ICs0OCwz
MSBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5XZWJDb250ZXh0TWVudVByb3h5TWFjKCk7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jiwg
Y29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+Jik7Ci0gICAgdmlydHVhbCB2b2lk
IGhpZGVDb250ZXh0TWVudSgpOworICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0
YT4mLCBjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGhpZGVDb250ZXh0TWVudSgpIG92ZXJyaWRlOwogICAgIAogICAgIHZvaWQgY29udGV4
dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYpOwogCisjaWYg
RU5BQkxFKElNQUdFX0NPTlRST0xTKQorICAgIHZvaWQgY2xlYXJJbWFnZVNlcnZpY2VzTWVudSgp
OworICAgIHZvaWQgcmVwbGFjZUNvbnRyb2xsZWRJbWFnZShDR0ltYWdlUmVmIG5ld0ltYWdlKTsK
KyNlbmRpZgorCisgICAgTlNXaW5kb3cgKndpbmRvdygpIGNvbnN0OworCiBwcml2YXRlOgogICAg
IFdlYkNvbnRleHRNZW51UHJveHlNYWMoV0tWaWV3KiwgV2ViUGFnZVByb3h5Kik7CiAKLSAgICB2
b2lkIHBvcHVsYXRlKGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYpOworICAg
IHZvaWQgcG9wdWxhdGUoY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiwgY29u
c3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYpOworCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xT
KQorICAgIHZvaWQgc2V0dXBJbWFnZVNlcnZpY2VzTWVudShTaGFyZWFibGVCaXRtYXAmKTsKKyNl
bmRpZgogCiAgICAgUmV0YWluUHRyPE5TUG9wVXBCdXR0b25DZWxsPiBtX3BvcHVwOworI2lmIEVO
QUJMRShJTUFHRV9DT05UUk9MUykKKyAgICBSZXRhaW5QdHI8TlNNZW51PiBtX3NlcnZpY2VzTWVu
dTsKKyNlbmRpZgogICAgIFdLVmlldyogbV93ZWJWaWV3OwogICAgIFdlYlBhZ2VQcm94eSogbV9w
YWdlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29u
dGV4dE1lbnVQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29u
dGV4dE1lbnVQcm94eU1hYy5tbQppbmRleCA5YmIzNjBjLi5mZGQ4ZTZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1t
CkBAIC0yOSwxMSArMjksMzQgQEAKICNpZiBQTEFURk9STShNQUMpCiAKICNpbXBvcnQgIlBhZ2VD
bGllbnRJbXBsLmgiCisjaW1wb3J0ICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbXBvcnQgIlN0cmlu
Z1V0aWxpdGllcy5oIgogI2ltcG9ydCAiV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIgogI2ltcG9y
dCAiV0tWaWV3LmgiCisjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9JbnRSZWN0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KKworI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyNpbXBvcnQgPEFwcEtpdC9OU1No
YXJpbmdTZXJ2aWNlLmg+CisKKyNpZiBfX2hhc19pbmNsdWRlKDxBcHBLaXQvTlNTaGFyaW5nU2Vy
dmljZV9Qcml2YXRlLmg+KQorI2ltcG9ydCA8QXBwS2l0L05TU2hhcmluZ1NlcnZpY2VfUHJpdmF0
ZS5oPgorI2Vsc2UKK3R5cGVkZWYgZW51bSB7CisgICAgTlNTaGFyaW5nU2VydmljZVBpY2tlclN0
eWxlTWVudSA9IDAsCisgICAgTlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxlUm9sbG92ZXIgPSAx
LAorICAgIE5TU2hhcmluZ1NlcnZpY2VQaWNrZXJTdHlsZVRleHRTZWxlY3Rpb24gPSAyCit9IE5T
U2hhcmluZ1NlcnZpY2VQaWNrZXJTdHlsZTsKKyNlbmRpZgorCitAaW50ZXJmYWNlIE5TU2hhcmlu
Z1NlcnZpY2VQaWNrZXIgKERldGFpbHMpCitAcHJvcGVydHkgTlNTaGFyaW5nU2VydmljZVBpY2tl
clN0eWxlIHN0eWxlOworLSAoTlNNZW51ICopbWVudTsKK0BlbmQKKyNlbmRpZgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNjYsNyArODksNyBAQCBAZW5kCiBAaW50ZXJmYWNlIFdL
TWVudVRhcmdldCA6IE5TT2JqZWN0IHsKICAgICBXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlN
YWMqIF9tZW51UHJveHk7CiB9Ci0rIChXS01lbnVUYXJnZXQqKXNoYXJlZE1lbnVUYXJnZXQ7Cisr
IChXS01lbnVUYXJnZXQgKilzaGFyZWRNZW51VGFyZ2V0OwogLSAoV2ViS2l0OjpXZWJDb250ZXh0
TWVudVByb3h5TWFjKiltZW51UHJveHk7CiAtICh2b2lkKXNldE1lbnVQcm94eTooV2ViS2l0OjpX
ZWJDb250ZXh0TWVudVByb3h5TWFjKiltZW51UHJveHk7CiAtICh2b2lkKWZvcndhcmRDb250ZXh0
TWVudUFjdGlvbjooaWQpc2VuZGVyOwpAQCAtMTA0LDYgKzEyNyw4MCBAQCAtICh2b2lkKWZvcndh
cmRDb250ZXh0TWVudUFjdGlvbjooaWQpc2VuZGVyCiAKIEBlbmQKIAorI2lmIEVOQUJMRShJTUFH
RV9DT05UUk9MUykKK0BpbnRlcmZhY2UgV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIDog
TlNPYmplY3QgPE5TU2hhcmluZ1NlcnZpY2VEZWxlZ2F0ZSwgTlNTaGFyaW5nU2VydmljZVBpY2tl
ckRlbGVnYXRlPiB7CisgICAgV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjKiBfbWVudVBy
b3h5OworICAgIFJldGFpblB0cjxOU1NoYXJpbmdTZXJ2aWNlUGlja2VyPiBfcGlja2VyOworfQor
CisrIChXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgKilzaGFyZWRTaGFyaW5nU2Vydmlj
ZVBpY2tlckRlbGVnYXRlOworLSAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjKiltZW51
UHJveHk7CistICh2b2lkKXNldE1lbnVQcm94eTooV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5
TWFjKiltZW51UHJveHk7CistICh2b2lkKXNldFBpY2tlcjooTlNTaGFyaW5nU2VydmljZVBpY2tl
ciAqKXBpY2tlcjsKK0BlbmQKKworLy8gRklYTUU6IFdlIHByb2JhYmx5IG5lZWQgdG8gaGFuZyBv
biB0aGUgcGlja2VyIGl0c2VsZiB1bnRpbCB0aGUgY29udGV4dCBtZW51IG9wZXJhdGlvbiBpcyBk
b25lLCBhbmQgdGhpcyBvYmplY3Qgd2lsbCBwcm9iYWJseSBkbyB0aGF0LgorQGltcGxlbWVudGF0
aW9uIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZQorKyAoV0tTaGFyaW5nU2VydmljZVBp
Y2tlckRlbGVnYXRlKilzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlCit7CisgICAg
c3RhdGljIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSogZGVsZWdhdGUgPSBbW1dLU2hh
cmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdF07CisgICAgcmV0dXJuIGRlbGVn
YXRlOworfQorCistIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMqKW1lbnVQcm94eQor
eworICAgIHJldHVybiBfbWVudVByb3h5OworfQorCistICh2b2lkKXNldE1lbnVQcm94eTooV2Vi
S2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjKiltZW51UHJveHkKK3sKKyAgICBfbWVudVByb3h5
ID0gbWVudVByb3h5OworfQorCistICh2b2lkKXNldFBpY2tlcjooTlNTaGFyaW5nU2VydmljZVBp
Y2tlciAqKXBpY2tlcgoreworICAgIF9waWNrZXIgPSBwaWNrZXI7Cit9CisKKy0gKGlkIDxOU1No
YXJpbmdTZXJ2aWNlRGVsZWdhdGU+KXNoYXJpbmdTZXJ2aWNlUGlja2VyOihOU1NoYXJpbmdTZXJ2
aWNlUGlja2VyICopc2hhcmluZ1NlcnZpY2VQaWNrZXIgZGVsZWdhdGVGb3JTaGFyaW5nU2Vydmlj
ZTooTlNTaGFyaW5nU2VydmljZSAqKXNoYXJpbmdTZXJ2aWNlCit7CisgICAgcmV0dXJuIHNlbGY7
Cit9CisKKy0gKHZvaWQpc2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFyaW5n
U2VydmljZSB3aWxsU2hhcmVJdGVtczooTlNBcnJheSAqKWl0ZW1zCit7CisgICAgX21lbnVQcm94
eS0+Y2xlYXJJbWFnZVNlcnZpY2VzTWVudSgpOworfQorCistICh2b2lkKXNoYXJpbmdTZXJ2aWNl
OihOU1NoYXJpbmdTZXJ2aWNlICopc2hhcmluZ1NlcnZpY2UgZGlkU2hhcmVJdGVtczooTlNBcnJh
eSAqKWl0ZW1zCit7CisgICAgLy8gRklYTUU6IFdoYXQgZG8gd2UgZG8gaWYgdGhlcmUgYXJlIG11
bHRpcGxlIGl0ZW1zPworICAgIFJldGFpblB0cjxDR0ltYWdlU291cmNlUmVmPiBzb3VyY2UgPSBh
ZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVXaXRoRGF0YSgoQ0ZEYXRhUmVmKVtpdGVtcyBvYmpl
Y3RBdEluZGV4OjBdLCBOVUxMKSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0g
YWRvcHRDRihDR0ltYWdlU291cmNlQ3JlYXRlSW1hZ2VBdEluZGV4KHNvdXJjZS5nZXQoKSwgMCwg
TlVMTCkpOworICAgIF9tZW51UHJveHktPnJlcGxhY2VDb250cm9sbGVkSW1hZ2UoaW1hZ2UuZ2V0
KCkpOworfQorCistIChOU1JlY3Qpc2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilz
aGFyaW5nU2VydmljZSBzb3VyY2VGcmFtZU9uU2NyZWVuRm9yU2hhcmVJdGVtOihpZCA8TlNQYXN0
ZWJvYXJkV3JpdGluZz4paXRlbQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IE5TWmVyb1JlY3Q7Cit9CisKKy0gKE5TSW1hZ2UgKilzaGFyaW5nU2VydmljZTooTlNTaGFyaW5n
U2VydmljZSAqKXNoYXJpbmdTZXJ2aWNlIHRyYW5zaXRpb25JbWFnZUZvclNoYXJlSXRlbTooaWQg
PE5TUGFzdGVib2FyZFdyaXRpbmc+KWl0ZW0gY29udGVudFJlY3Q6KE5TUmVjdCAqKWNvbnRlbnRS
ZWN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbmlsOworfQorCistIChO
U1dpbmRvdyAqKXNoYXJpbmdTZXJ2aWNlOihOU1NoYXJpbmdTZXJ2aWNlICopc2hhcmluZ1NlcnZp
Y2Ugc291cmNlV2luZG93Rm9yU2hhcmVJdGVtczooTlNBcnJheSAqKWl0ZW1zIHNoYXJpbmdDb250
ZW50U2NvcGU6KE5TU2hhcmluZ0NvbnRlbnRTY29wZSAqKXNoYXJpbmdDb250ZW50U2NvcGUKK3sK
KyAgICByZXR1cm4gX21lbnVQcm94eS0+d2luZG93KCk7Cit9CisKK0BlbmQKKworI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpXZWJDb250ZXh0
TWVudVByb3h5TWFjKFdLVmlldyogd2ViVmlldywgV2ViUGFnZVByb3h5KiBwYWdlKQpAQCAtMTIw
LDYgKzIxNywxMCBAQCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjp+V2ViQ29udGV4dE1lbnVQcm94
eU1hYygpCiAKIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Y29udGV4dE1lbnVJdGVtU2Vs
ZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKIHsKKyNpZiBFTkFCTEUo
SU1BR0VfQ09OVFJPTFMpCisgICAgY2xlYXJJbWFnZVNlcnZpY2VzTWVudSgpOworI2VuZGlmCisK
ICAgICBtX3BhZ2UtPmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGl0ZW0pOwogfQogCkBAIC0xODUs
OCArMjg2LDM2IEBAIHN0YXRpYyBWZWN0b3I8UmV0YWluUHRyPE5TTWVudUl0ZW0+PiBuc01lbnVJ
dGVtVmVjdG9yKGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVuCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotdm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpwb3B1bGF0ZShjb25zdCBWZWN0b3I8
V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKQorI2lmIEVOQUJMRShJTUFHRV9DT05UUk9M
UykKK3ZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6c2V0dXBJbWFnZVNlcnZpY2VzTWVudShT
aGFyZWFibGVCaXRtYXAmIGltYWdlKQogeworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjZ0lt
YWdlID0gaW1hZ2UubWFrZUNHSW1hZ2UoKTsKKyAgICBSZXRhaW5QdHI8TlNJbWFnZT4gbnNJbWFn
ZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZS5nZXQo
KSBzaXplOmltYWdlLnNpemUoKV0pOworCisgICAgUmV0YWluUHRyPE5TU2hhcmluZ1NlcnZpY2VQ
aWNrZXI+IHBpY2tlciA9IGFkb3B0TlMoW1tOU1NoYXJpbmdTZXJ2aWNlUGlja2VyIGFsbG9jXSBp
bml0V2l0aEl0ZW1zOkBbIG5zSW1hZ2UuZ2V0KCkgXV0pOworICAgIFtwaWNrZXIgc2V0U3R5bGU6
TlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxlUm9sbG92ZXJdOworICAgIFtwaWNrZXIgc2V0RGVs
ZWdhdGU6W1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2Vydmlj
ZVBpY2tlckRlbGVnYXRlXV07CisgICAgW1tXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUg
c2hhcmVkU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZV0gc2V0UGlja2VyOnBpY2tlci5nZXQo
KV07CisKKyAgICBtX3NlcnZpY2VzTWVudSA9IFtwaWNrZXIgbWVudV07Cit9CisKK3ZvaWQgV2Vi
Q29udGV4dE1lbnVQcm94eU1hYzo6Y2xlYXJJbWFnZVNlcnZpY2VzTWVudSgpCit7CisgICAgW1tX
S1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgc2hhcmVkU2hhcmluZ1NlcnZpY2VQaWNrZXJE
ZWxlZ2F0ZV0gc2V0UGlja2VyOm51bGxwdHJdOworICAgIG1fc2VydmljZXNNZW51ID0gbnVsbHB0
cjsKK30KKyNlbmRpZgorCit2b2lkIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OnBvcHVsYXRlKGNv
bnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgaXRlbXMsIGNvbnN0IENvbnRleHRN
ZW51Q29udGV4dERhdGEmIGNvbnRleHQpCit7CisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQor
ICAgIGlmIChSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBpbWFnZSA9IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlKGNvbnRleHQuY29udHJvbGxlZEltYWdlSGFuZGxlKCkpKSB7CisgICAgICAgIHNldHVw
SW1hZ2VTZXJ2aWNlc01lbnUoKmltYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRp
ZgorCiAgICAgaWYgKG1fcG9wdXApCiAgICAgICAgIFttX3BvcHVwIHJlbW92ZUFsbEl0ZW1zXTsK
ICAgICBlbHNlIHsKQEAgLTE5OSwyMiArMzI4LDM4IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94
eU1hYzo6cG9wdWxhdGUoY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBpdGVt
CiAgICAgcG9wdWxhdGVOU01lbnUobWVudSwgbnNNZW51SXRlbVZlY3RvcihpdGVtcykpOwogfQog
Ci12b2lkIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OnNob3dDb250ZXh0TWVudShjb25zdCBJbnRQ
b2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4m
IGl0ZW1zKQordm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpzaG93Q29udGV4dE1lbnUoY29u
c3QgSW50UG9pbnQmIG1lbnVMb2NhdGlvbiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRl
bURhdGE+JiBpdGVtcywgY29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYgY29udGV4dCkKIHsK
KyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAgaWYgKGl0ZW1zLmlzRW1wdHkoKSAmJiBj
b250ZXh0LmNvbnRyb2xsZWRJbWFnZUhhbmRsZSgpLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47
CisjZWxzZQogICAgIGlmIChpdGVtcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICAK
LSAgICBwb3B1bGF0ZShpdGVtcyk7CisjZW5kaWYKKworICAgIHBvcHVsYXRlKGl0ZW1zLCBjb250
ZXh0KTsKKwogICAgIFtbV0tNZW51VGFyZ2V0IHNoYXJlZE1lbnVUYXJnZXRdIHNldE1lbnVQcm94
eTp0aGlzXTsKLSAgICAKKwogICAgIE5TUmVjdCBtZW51UmVjdCA9IE5TTWFrZVJlY3QobWVudUxv
Y2F0aW9uLngoKSwgbWVudUxvY2F0aW9uLnkoKSwgMCwgMCk7Ci0gICAgCisKKyNpZiBFTkFCTEUo
SU1BR0VfQ09OVFJPTFMpCisgICAgaWYgKCFjb250ZXh0LmNvbnRyb2xsZWRJbWFnZUhhbmRsZSgp
LmlzTnVsbCgpKQorICAgICAgICBbW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFy
ZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlXSBzZXRNZW51UHJveHk6dGhpc107CisKKyAg
ICBpZiAoIW1fc2VydmljZXNNZW51KQorICAgICAgICBbbV9wb3B1cCBhdHRhY2hQb3BVcFdpdGhG
cmFtZTptZW51UmVjdCBpblZpZXc6bV93ZWJWaWV3XTsKKworICAgIE5TTWVudSogbWVudSA9IG1f
c2VydmljZXNNZW51ID8gbV9zZXJ2aWNlc01lbnUuZ2V0KCkgOiBbbV9wb3B1cCBtZW51XTsKKyNl
bHNlCiAgICAgW21fcG9wdXAgYXR0YWNoUG9wVXBXaXRoRnJhbWU6bWVudVJlY3QgaW5WaWV3Om1f
d2ViVmlld107CiAKICAgICBOU01lbnUqIG1lbnUgPSBbbV9wb3B1cCBtZW51XTsKKyNlbmRpZgog
CiAgICAgLy8gVGhlc2UgdmFsdWVzIHdlcmUgYm9ycm93ZWQgZnJvbSBBcHBLaXQgdG8gbWF0Y2gg
dGhlaXIgcGxhY2VtZW50IG9mIHRoZSBtZW51LgotICAgIE5TUmVjdCB0aXRsZUZyYW1lID0gW21f
cG9wdXAgIHRpdGxlUmVjdEZvckJvdW5kczptZW51UmVjdF07CisgICAgTlNSZWN0IHRpdGxlRnJh
bWUgPSBbbV9wb3B1cCB0aXRsZVJlY3RGb3JCb3VuZHM6bWVudVJlY3RdOwogICAgIGlmICh0aXRs
ZUZyYW1lLnNpemUud2lkdGggPD0gMCB8fCB0aXRsZUZyYW1lLnNpemUuaGVpZ2h0IDw9IDApCiAg
ICAgICAgIHRpdGxlRnJhbWUgPSBtZW51UmVjdDsKICAgICBmbG9hdCB2ZXJ0T2Zmc2V0ID0gcm91
bmRmKChOU01heFkobWVudVJlY3QpIC0gTlNNYXhZKHRpdGxlRnJhbWUpKSArIE5TSGVpZ2h0KHRp
dGxlRnJhbWUpKTsKQEAgLTIyOCw3ICszNzMsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51UHJveHlN
YWM6OnNob3dDb250ZXh0TWVudShjb25zdCBJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdAog
CiAgICAgV0tQb3B1cENvbnRleHRNZW51KG1lbnUsIGxvY2F0aW9uKTsKIAotICAgIFttX3BvcHVw
IGRpc21pc3NQb3BVcF07CisgICAgaGlkZUNvbnRleHRNZW51KCk7CiB9CiAKIHZvaWQgV2ViQ29u
dGV4dE1lbnVQcm94eU1hYzo6aGlkZUNvbnRleHRNZW51KCkKQEAgLTIzNiw2ICszODEsMjIgQEAg
dm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpoaWRlQ29udGV4dE1lbnUoKQogICAgIFttX3Bv
cHVwIGRpc21pc3NQb3BVcF07CiB9CiAKK05TV2luZG93ICpXZWJDb250ZXh0TWVudVByb3h5TWFj
Ojp3aW5kb3coKSBjb25zdAoreworICAgIHJldHVybiBbbV93ZWJWaWV3IHdpbmRvd107Cit9CisK
KyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCit2b2lkIFdlYkNvbnRleHRNZW51UHJveHlNYWM6
OnJlcGxhY2VDb250cm9sbGVkSW1hZ2UoQ0dJbWFnZVJlZiBuZXdJbWFnZSkKK3sKKyAgICBGbG9h
dFNpemUgbmV3SW1hZ2VTaXplKENHSW1hZ2VHZXRXaWR0aChuZXdJbWFnZSksIENHSW1hZ2VHZXRI
ZWlnaHQobmV3SW1hZ2UpKTsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBuZXdCaXRtYXAg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShleHBhbmRlZEludFNpemUobmV3SW1h
Z2VTaXplKSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKKyAgICBuZXdCaXRtYXAt
PmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpLT5kcmF3TmF0aXZlSW1hZ2UobmV3SW1hZ2UsIG5ld0lt
YWdlU2l6ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbmV3
SW1hZ2VTaXplKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbmV3SW1hZ2VTaXplKSk7CisKKyAg
ICBtX3BhZ2UtPnJlcGxhY2VDb250cm9sbGVkSW1hZ2UobmV3Qml0bWFwLnJlbGVhc2UoKSk7Cit9
CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShN
QUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29u
dGV4dE1lbnUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRl
eHRNZW51LmNwcAppbmRleCBiMDAzMGRjLi40OGQxZTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAKQEAgLTU0LDkgKzU0
LDYgQEAgV2ViQ29udGV4dE1lbnU6On5XZWJDb250ZXh0TWVudSgpCiB2b2lkIFdlYkNvbnRleHRN
ZW51OjpzaG93KCkKIHsKICAgICBDb250ZXh0TWVudUNvbnRyb2xsZXImIGNvbnRyb2xsZXIgPSBt
X3BhZ2UtPmNvcmVQYWdlKCktPmNvbnRleHRNZW51Q29udHJvbGxlcigpOwotICAgIENvbnRleHRN
ZW51KiBtZW51ID0gY29udHJvbGxlci5jb250ZXh0TWVudSgpOwotICAgIGlmICghbWVudSkKLSAg
ICAgICAgcmV0dXJuOwogICAgIEZyYW1lKiBmcmFtZSA9IGNvbnRyb2xsZXIuaGl0VGVzdFJlc3Vs
dCgpLmlubmVyTm9kZUZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwpA
QCAtODAsNiArNzcsMTMgQEAgdm9pZCBXZWJDb250ZXh0TWVudTo6aXRlbVNlbGVjdGVkKGNvbnN0
IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCiAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5j
b250ZXh0TWVudUNvbnRyb2xsZXIoKS5jb250ZXh0TWVudUl0ZW1TZWxlY3RlZCgmY29yZUl0ZW0p
OwogfQogCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQordm9pZCBXZWJDb250ZXh0TWVudTo6
cmVwbGFjZUNvbnRyb2xsZWRJbWFnZShQYXNzUmVmUHRyPEltYWdlPiBuZXdJbWFnZSkKK3sKKyAg
ICBtX3BhZ2UtPmNvcmVQYWdlKCktPmNvbnRleHRNZW51Q29udHJvbGxlcigpLnJlcGxhY2VDb250
cm9sbGVkSW1hZ2UobmV3SW1hZ2UpOworfQorI2VuZGlmCisKIHZvaWQgV2ViQ29udGV4dE1lbnU6
Om1lbnVJdGVtc1dpdGhVc2VyRGF0YShWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4gJm1l
bnVJdGVtcywgUmVmUHRyPEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpIGNvbnN0CiB7CiAgICAgQ29u
dGV4dE1lbnVDb250cm9sbGVyJiBjb250cm9sbGVyID0gbV9wYWdlLT5jb3JlUGFnZSgpLT5jb250
ZXh0TWVudUNvbnRyb2xsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkNvbnRleHRNZW51LmgKaW5kZXggNzVlZDdlNi4uZDliMTg4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmgKQEAg
LTI4LDggKzI4LDEzIEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJbWFnZTsKK30K
KwogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFNoYXJlYWJsZUJpdG1hcDsKIGNsYXNzIFdl
YlBhZ2U7CiAKIGNsYXNzIFdlYkNvbnRleHRNZW51IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViQ29u
dGV4dE1lbnU+IHsKQEAgLTQ1LDYgKzUwLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGl0ZW1TZWxl
Y3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJik7CiAgICAgVmVjdG9yPFdlYkNvbnRl
eHRNZW51SXRlbURhdGE+IGl0ZW1zKCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJP
TFMpCisgICAgdm9pZCByZXBsYWNlQ29udHJvbGxlZEltYWdlKFBhc3NSZWZQdHI8V2ViQ29yZTo6
SW1hZ2U+KTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYkNvbnRleHRNZW51KFdlYlBhZ2Uq
KTsKICAgICB2b2lkIG1lbnVJdGVtc1dpdGhVc2VyRGF0YShWZWN0b3I8V2ViQ29udGV4dE1lbnVJ
dGVtRGF0YT4mLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZTcyZjAzNS4uNGM0M2YzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAt
MzA4MSw2ICszMDgxLDE0IEBAIHZvaWQgV2ViUGFnZTo6ZGlkU2VsZWN0SXRlbUZyb21BY3RpdmVD
b250ZXh0TWVudShjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpCiB9CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKK3ZvaWQgV2ViUGFnZTo6cmVwbGFjZUNvbnRyb2xs
ZWRJbWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgYml0bWFwSGFuZGxlKQorewor
ICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlKGJpdG1hcEhhbmRsZSk7CisgICAgbV9jb250ZXh0TWVudS0+cmVwbGFjZUNvbnRyb2xsZWRJ
bWFnZShiaXRtYXAtPmNyZWF0ZUltYWdlKCkpOworfQorI2VuZGlmCisKIHZvaWQgV2ViUGFnZTo6
cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiB0ZXh0
KQogewogICAgIGJvb2wgc2VsZWN0UmVwbGFjZW1lbnQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNjkyOWI4Zi4uNzMzOGRkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC03NDIsNiAr
NzQyLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0Qnl0ZWNvZGVQcm9maWxlKHVpbnQ2NF90
IGNhbGxiYWNrSUQpOwogCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorICAgIHZvaWQgcmVw
bGFjZUNvbnRyb2xsZWRJbWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYpOworI2Vu
ZGlmCisKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA5YzM3MGU1Li5mYmFlOTU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgpAQCAtMzM5LDQgKzMzOSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVn
YWN5UmVjZWl2ZXIgewogICAgIAogICAgIFRha2VUaHVtYm5haWxTbmFwc2hvdCh1aW50NjRfdCBj
YWxsYmFja0lEKQogCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorICAgIFJlcGxhY2VDb250
cm9sbGVkSW1hZ2UoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBuZXdCaXRtYXBIYW5k
bGUpCisjZW5kaWYKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227115</attachid>
            <date>2014-03-18 15:03:31 -0700</date>
            <delta_ts>2014-03-18 16:18:40 -0700</delta_ts>
            <desc>Patch v2 - Build fixes</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>29993</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAxM2JkZjg4Li5iNDU3ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMg
QEAKKzIwMTQtMDMtMTggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIE1ha2UgaW1hZ2UgY29udHJvbHMgbWVudSB3b3JrIGluIFdLMgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMTYyOTQ0MTI+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTMwNDI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9tYWMv
U2hhcmVkTWVtb3J5TWFjLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5k
bGU6On5IYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZTo6Y2xl
YXIpOgorCisgICAgICAgICogU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpDb250ZXh0TWVudUNvbnRleHREYXRhOjpDb250ZXh0TWVudUNvbnRleHRE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDb250ZXh0RGF0YTo6b3BlcmF0b3I9
KToKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDb250ZXh0RGF0YTo6ZW5jb2RlKToKKyAg
ICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDb250ZXh0RGF0YTo6ZGVjb2RlKToKKyAgICAgICAg
KiBTaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oOgorICAgICAgICAoV2ViS2l0OjpDb250
ZXh0TWVudUNvbnRleHREYXRhOjpjb250cm9sbGVkSW1hZ2VIYW5kbGUpOgorCisgICAgICAgICog
U2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlOjpjbGVhcik6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0TWVudVByb3h5Lmg6CisKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjppbnRlcm5hbFNob3dDb250ZXh0TWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVwbGFjZUNvbnRyb2xsZWRJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVByb3h5
RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbDo6c2hvd0Nv
bnRleHRNZW51KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlF
ZmwuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlHdGs6OnNob3dDb250ZXh0
TWVudSk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmg6
CisKKyAgICAgICAgQWRkIGEgc2hhcmluZyBzZXJ2aWNlIGNvbnRleHQgbWVudSB0aGF0IGxpdmVz
IHNpZGUtYnktc2lkZSB3aXRoIHRoZSBub3JtYWwgb25lOgorICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2Vi
Q29udGV4dE1lbnVQcm94eU1hYy5tbToKKyAgICAgICAgKCtbV0tTaGFyaW5nU2VydmljZVBpY2tl
ckRlbGVnYXRlIHNoYXJlZFNoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGVdKToKKyAgICAgICAg
KC1bV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIFdlYktpdDo6XSk6CisgICAgICAgICgt
W1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzZXRNZW51UHJveHk6V2ViS2l0OjpdKToK
KyAgICAgICAgKC1bV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIHNldFBpY2tlcjpdKToK
KyAgICAgICAgKC1bV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIHNoYXJpbmdTZXJ2aWNl
UGlja2VyOmRlbGVnYXRlRm9yU2hhcmluZ1NlcnZpY2U6XSk6CisgICAgICAgICgtW1dLU2hhcmlu
Z1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyaW5nU2VydmljZTp3aWxsU2hhcmVJdGVtczpdKToK
KyAgICAgICAgKC1bV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIHNoYXJpbmdTZXJ2aWNl
OmRpZFNoYXJlSXRlbXM6XSk6CisgICAgICAgICgtW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxl
Z2F0ZSBzaGFyaW5nU2VydmljZTpzb3VyY2VGcmFtZU9uU2NyZWVuRm9yU2hhcmVJdGVtOl0pOgor
ICAgICAgICAoLVtXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgc2hhcmluZ1NlcnZpY2U6
dHJhbnNpdGlvbkltYWdlRm9yU2hhcmVJdGVtOmNvbnRlbnRSZWN0Ol0pOgorICAgICAgICAoLVtX
S1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgc2hhcmluZ1NlcnZpY2U6c291cmNlV2luZG93
Rm9yU2hhcmVJdGVtczpzaGFyaW5nQ29udGVudFNjb3BlOl0pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0TWVudVByb3h5TWFjOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWM6OnNldHVwSW1hZ2VTZXJ2aWNlc01lbnUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjpjbGVhckltYWdlU2Vy
dmljZXNNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6cG9w
dWxhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjpzaG93Q29u
dGV4dE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjp3aW5k
b3cpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjpyZXBsYWNlQ29u
dHJvbGxlZEltYWdlKToKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0
TWVudS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51OjpzaG93KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnU6OnJlcGxhY2VDb250cm9sbGVkSW1hZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5oOgorCisgICAgICAgIFRl
YWNoIHRoZSBXZWJQcm9jZXNzIGhvdyB0byBhY2NlcHQgdGhlIHJlcGxhY2VkIGltYWdlLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cmVwbGFjZUNvbnRyb2xsZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbjoKKwogMjAxNC0wMy0xOCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT046IFZpc2l0ZWQgbGluayBjb2xvcmluZyBzZWVt
cyB0byBiZSBjb21wbGV0ZWx5IGJyb2tlbiBpbiB0aXAgb2YgdHJlZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRleCBlZmE1ZjAwLi45ZTI1ZDA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaApAQCAtNTcsNiArNTcsOCBAQCBwdWJsaWM6CiAKICAg
ICAgICAgYm9vbCBpc051bGwoKSBjb25zdDsKIAorICAgICAgICB2b2lkIGNsZWFyKCk7CisKICAg
ICAgICAgdm9pZCBlbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImKSBjb25zdDsKICAgICAgICAg
c3RhdGljIGJvb2wgZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiwgSGFuZGxlJik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9TaGFyZWRNZW1vcnlNYWMuY3Bw
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1NoYXJlZE1lbW9yeU1hYy5jcHAKaW5kZXgg
NDZhNDNmMy4uYzc3NGEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFj
L1NoYXJlZE1lbW9yeU1hYy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1No
YXJlZE1lbW9yeU1hYy5jcHAKQEAgLTQ2LDggKzQ2LDcgQEAgU2hhcmVkTWVtb3J5OjpIYW5kbGU6
OkhhbmRsZSgpCiAKIFNoYXJlZE1lbW9yeTo6SGFuZGxlOjp+SGFuZGxlKCkKIHsKLSAgICBpZiAo
bV9wb3J0KQotICAgICAgICBtYWNoX3BvcnRfZGVhbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBt
X3BvcnQpOworICAgIGNsZWFyKCk7CiB9CiAKIGJvb2wgU2hhcmVkTWVtb3J5OjpIYW5kbGU6Omlz
TnVsbCgpIGNvbnN0CkBAIC01NSw2ICs1NCwxNSBAQCBib29sIFNoYXJlZE1lbW9yeTo6SGFuZGxl
Ojppc051bGwoKSBjb25zdAogICAgIHJldHVybiAhbV9wb3J0OwogfQogCit2b2lkIFNoYXJlZE1l
bW9yeTo6SGFuZGxlOjpjbGVhcigpCit7CisgICAgaWYgKG1fcG9ydCkKKyAgICAgICAgbWFjaF9w
b3J0X2RlYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgbV9wb3J0KTsKKworICAgIG1fcG9ydCA9
IE1BQ0hfUE9SVF9OVUxMOworICAgIG1fc2l6ZSA9IDA7Cit9CisKIHZvaWQgU2hhcmVkTWVtb3J5
OjpIYW5kbGU6OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsK
ICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3NpemUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwCmluZGV4IGQ2ZmFh
ZDY3Li5kY2Y3M2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29udGV4dE1l
bnVDb250ZXh0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvbnRleHRNZW51
Q29udGV4dERhdGEuY3BwCkBAIC0zMSwzMSArMzEsNTUgQEAKIAogI2luY2x1ZGUgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnVDb250ZXh0Lmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBDb250ZXh0TWVudUNvbnRleHREYXRh
OjpDb250ZXh0TWVudUNvbnRleHREYXRhKCkKLSNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCi0g
ICAgOiBtX2lzSW1hZ2VDb250cm9sKGZhbHNlKQotI2VuZGlmCiB7CiB9CiAKIENvbnRleHRNZW51
Q29udGV4dERhdGE6OkNvbnRleHRNZW51Q29udGV4dERhdGEoY29uc3QgQ29udGV4dE1lbnVDb250
ZXh0JiBjb250ZXh0KQogICAgIDogbV93ZWJIaXRUZXN0UmVzdWx0RGF0YShXZWJIaXRUZXN0UmVz
dWx0OjpEYXRhKGNvbnRleHQuaGl0VGVzdFJlc3VsdCgpKSkKK3sKICNpZiBFTkFCTEUoSU1BR0Vf
Q09OVFJPTFMpCi0gICAgLCBtX2lzSW1hZ2VDb250cm9sKGNvbnRleHQuY29udHJvbGxlZEltYWdl
KCkpCisgICAgSW1hZ2UqIGltYWdlID0gY29udGV4dC5jb250cm9sbGVkSW1hZ2UoKTsKKyAgICBp
ZiAoIWltYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFnZS0+c2l6ZSgp
LCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOworICAgIGJpdG1hcC0+Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0KCktPmRyYXdJbWFnZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50
UG9pbnQoKSk7CisgICAgYml0bWFwLT5jcmVhdGVIYW5kbGUobV9jb250cm9sbGVkSW1hZ2VIYW5k
bGUpOwogI2VuZGlmCit9CisKK0NvbnRleHRNZW51Q29udGV4dERhdGE6OkNvbnRleHRNZW51Q29u
dGV4dERhdGEoY29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYgb3RoZXIpCiB7CisgICAgKnRo
aXMgPSBvdGhlcjsKK30KKworQ29udGV4dE1lbnVDb250ZXh0RGF0YSYgQ29udGV4dE1lbnVDb250
ZXh0RGF0YTo6b3BlcmF0b3I9KGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmIG90aGVyKQor
eworICAgIG1fd2ViSGl0VGVzdFJlc3VsdERhdGEgPSBvdGhlci5tX3dlYkhpdFRlc3RSZXN1bHRE
YXRhOworI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyAgICBtX2NvbnRyb2xsZWRJbWFnZUhh
bmRsZS5jbGVhcigpOworCisgICAgaWYgKCFvdGhlci5tX2NvbnRyb2xsZWRJbWFnZUhhbmRsZS5p
c051bGwoKSkgeworICAgICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZShvdGhlci5tX2NvbnRyb2xsZWRJbWFnZUhhbmRsZSk7CisgICAg
ICAgIGJpdG1hcC0+Y3JlYXRlSGFuZGxlKG1fY29udHJvbGxlZEltYWdlSGFuZGxlKTsKKyAgICB9
CisjZW5kaWYKKworICAgIHJldHVybiAqdGhpczsKIH0KIAogdm9pZCBDb250ZXh0TWVudUNvbnRl
eHREYXRhOjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAg
ICAgZW5jb2RlciA8PCBtX3dlYkhpdFRlc3RSZXN1bHREYXRhOwogI2lmIEVOQUJMRShJTUFHRV9D
T05UUk9MUykKLSAgICBlbmNvZGVyIDw8IG1faXNJbWFnZUNvbnRyb2w7CisgICAgZW5jb2RlciA8
PCBtX2NvbnRyb2xsZWRJbWFnZUhhbmRsZTsKICNlbmRpZgogfQogCkBAIC02NSw3ICs4OSw3IEBA
IGJvb2wgQ29udGV4dE1lbnVDb250ZXh0RGF0YTo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVy
JiBkZWNvZGVyLCBDb250ZXh0TWVudUNvCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
CiAjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29u
dGV4dE1lbnVDb250ZXh0RGF0YS5tX2lzSW1hZ2VDb250cm9sKSkKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGNvbnRleHRNZW51Q29udGV4dERhdGEubV9jb250cm9sbGVkSW1hZ2VIYW5kbGUpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmgKaW5kZXggODk0OTMzOS4uNmM2YWU4OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oCkBAIC0yOSw2
ICsyOSw3IEBACiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIAorI2luY2x1ZGUgIlNoYXJl
YWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIldlYkhpdFRlc3RSZXN1bHQuaCIKIAogbmFtZXNwYWNl
IElQQyB7CkBAIC00NiwxMSArNDcsMTQgQEAgY2xhc3MgQ29udGV4dE1lbnVDb250ZXh0RGF0YSB7
CiBwdWJsaWM6CiAgICAgQ29udGV4dE1lbnVDb250ZXh0RGF0YSgpOwogICAgIENvbnRleHRNZW51
Q29udGV4dERhdGEoY29uc3QgV2ViQ29yZTo6Q29udGV4dE1lbnVDb250ZXh0Jik7CisKKyAgICBD
b250ZXh0TWVudUNvbnRleHREYXRhKGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmKTsKKyAg
ICBDb250ZXh0TWVudUNvbnRleHREYXRhJiBvcGVyYXRvcj0oY29uc3QgQ29udGV4dE1lbnVDb250
ZXh0RGF0YSYpOwogICAgIAogICAgIGNvbnN0IFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEmIHdlYkhp
dFRlc3RSZXN1bHREYXRhKCkgY29uc3QgeyByZXR1cm4gbV93ZWJIaXRUZXN0UmVzdWx0RGF0YTsg
fQogCiAjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQotICAgIGJvb2wgaXNJbWFnZUNvbnRyb2wo
KSBjb25zdCB7IHJldHVybiBtX2lzSW1hZ2VDb250cm9sOyB9CisgICAgY29uc3QgU2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGUmIGNvbnRyb2xsZWRJbWFnZUhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udHJvbGxlZEltYWdlSGFuZGxlOyB9CiAjZW5kaWYKIAogICAgIHZvaWQgZW5jb2RlKElQQzo6
QXJndW1lbnRFbmNvZGVyJikgY29uc3Q7CkBAIC02MSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAg
V2ViSGl0VGVzdFJlc3VsdDo6RGF0YSBtX3dlYkhpdFRlc3RSZXN1bHREYXRhOwogCiAjaWYgRU5B
QkxFKElNQUdFX0NPTlRST0xTKQotICAgIGJvb2wgbV9pc0ltYWdlQ29udHJvbDsKKyAgICBTaGFy
ZWFibGVCaXRtYXA6OkhhbmRsZSBtX2NvbnRyb2xsZWRJbWFnZUhhbmRsZTsKICNlbmRpZgogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAppbmRleCA5ZWI0NzU5
Li4yYTI4Y2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0
bWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcApA
QCAtNTcsNiArNTcsMTMgQEAgYm9vbCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6ZGVjb2RlKElQ
Qzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhhbmQKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAordm9pZCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6Y2xlYXIoKQoreworICAgIG1f
aGFuZGxlLmNsZWFyKCk7CisgICAgbV9zaXplID0gSW50U2l6ZSgpOworICAgIG1fZmxhZ3MgPSBG
bGFnOjpOb0ZsYWdzOworfQorCiBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MpCiB7CiAgICAg
c2l6ZV90IG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1NoYXJlYWJsZUJpdG1hcC5oCmluZGV4IDQ3MTYxZjAuLmExOTZkYjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKQEAgLTYzLDYgKzYzLDggQEAgcHVibGljOgog
CiAgICAgICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUuaXNOdWxsKCk7
IH0KIAorICAgICAgICB2b2lkIGNsZWFyKCk7CisKICAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpB
cmd1bWVudEVuY29kZXImKSBjb25zdDsKICAgICAgICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6
QXJndW1lbnREZWNvZGVyJiwgSGFuZGxlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVudVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dE1lbnVQcm94eS5oCmluZGV4IDA5ODU1MmQuLjU1NDZlNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVudVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuaApAQCAtMzYsMTMg
KzM2LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2Ns
YXNzIENvbnRleHRNZW51Q29udGV4dERhdGE7CiBjbGFzcyBXZWJDb250ZXh0TWVudUl0ZW1EYXRh
OwogCiBjbGFzcyBXZWJDb250ZXh0TWVudVByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViQ29u
dGV4dE1lbnVQcm94eT4gewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYkNvbnRleHRNZW51UHJv
eHkoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudShjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYsIGNvbnN0IENvbnRl
eHRNZW51Q29udGV4dERhdGEmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGhpZGVDb250ZXh0TWVu
dSgpID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAppbmRleCBmMDNhY2ZlLi40NDlkYTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzI5MywyMiArMzI5MywzMiBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6aW50ZXJuYWxTaG93Q29udGV4dE1lbnUoY29uc3QgSW50UG9pbnQmIG1lbnVMb2NhdGlv
biwgY29uc3QgQwogICAgIC8vIFVubGVzcyB0aGlzIGlzIGFuIGltYWdlIGNvbnRyb2wsIGdpdmUg
dGhlIFBhZ2VDb250ZXh0TWVudUNsaWVudCBvbmUgbGFzdCBzd2lwZSBhdCBjaGFuZ2luZyB0aGUg
bWVudS4KICAgICBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4gaXRlbXM7CiAgICAgYm9v
bCB1c2VQcm9wb3NlZEl0ZW1zID0gdHJ1ZTsKLQorICAgIGJvb2wgYXNrQ2xpZW50VG9DaGFuZ2VN
ZW51ID0gdHJ1ZTsKICNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCi0gICAgaWYgKCFjb250ZXh0
TWVudUNvbnRleHREYXRhLmlzSW1hZ2VDb250cm9sKCkgJiYgbV9jb250ZXh0TWVudUNsaWVudC5n
ZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUodGhpcywgcHJvcG9zZWRJdGVtcywgaXRlbXMs
IGNvbnRleHRNZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKSwgdXNlckRhdGEu
Z2V0KCkpKSB7Ci0jZWxzZQotICAgIGlmIChtX2NvbnRleHRNZW51Q2xpZW50LmdldENvbnRleHRN
ZW51RnJvbVByb3Bvc2VkTWVudSh0aGlzLCBwcm9wb3NlZEl0ZW1zLCBpdGVtcywgY29udGV4dE1l
bnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLCB1c2VyRGF0YS5nZXQoKSkpIHsK
KyAgICBpZiAoIWNvbnRleHRNZW51Q29udGV4dERhdGEuY29udHJvbGxlZEltYWdlSGFuZGxlKCku
aXNOdWxsKCkpCisgICAgICAgIGFza0NsaWVudFRvQ2hhbmdlTWVudSA9IGZhbHNlOwogI2VuZGlm
CisKKyAgICBpZiAoYXNrQ2xpZW50VG9DaGFuZ2VNZW51ICYmIG1fY29udGV4dE1lbnVDbGllbnQu
Z2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KHRoaXMsIHByb3Bvc2VkSXRlbXMsIGl0ZW1z
LCBjb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCksIHVzZXJEYXRh
LmdldCgpKSkKICAgICAgICAgdXNlUHJvcG9zZWRJdGVtcyA9IGZhbHNlOwotICAgIH0KICAgICAK
ICAgICBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zVG9TaG93ID0g
dXNlUHJvcG9zZWRJdGVtcyA/IHByb3Bvc2VkSXRlbXMgOiBpdGVtczsKICAgICBpZiAoIW1fY29u
dGV4dE1lbnVDbGllbnQuc2hvd0NvbnRleHRNZW51KHRoaXMsIG1lbnVMb2NhdGlvbiwgaXRlbXNU
b1Nob3cpKQotICAgICAgICBtX2FjdGl2ZUNvbnRleHRNZW51LT5zaG93Q29udGV4dE1lbnUobWVu
dUxvY2F0aW9uLCBpdGVtc1RvU2hvdyk7Ci0gICAgCisgICAgICAgIG1fYWN0aXZlQ29udGV4dE1l
bnUtPnNob3dDb250ZXh0TWVudShtZW51TG9jYXRpb24sIGl0ZW1zVG9TaG93LCBjb250ZXh0TWVu
dUNvbnRleHREYXRhKTsKKwogICAgIG1fY29udGV4dE1lbnVDbGllbnQuY29udGV4dE1lbnVEaXNt
aXNzZWQodGhpcyk7CiB9CiAKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCit2b2lkIFdlYlBh
Z2VQcm94eTo6cmVwbGFjZUNvbnRyb2xsZWRJbWFnZShQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gbmV3Qml0bWFwKQoreworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IG5l
d0JpdG1hcDsKKyAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBiaXRtYXBIYW5kbGU7CisgICAg
Yml0bWFwLT5jcmVhdGVIYW5kbGUoYml0bWFwSGFuZGxlKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlJlcGxhY2VDb250cm9sbGVkSW1hZ2UoYml0bWFwSGFuZGxlKSwg
bV9wYWdlSUQpOworfQorI2VuZGlmCisKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0
ZW1TZWxlY3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQogewogICAgIC8v
IEFwcGxpY2F0aW9uIGN1c3RvbSBpdGVtcyBkb24ndCBuZWVkIHRvIHJvdW5kLXRyaXAgdGhyb3Vn
aCB0byBXZWJDb3JlIGluIHRoZSBXZWJQcm9jZXNzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCmluZGV4IDYyNWM2YzUuLjIzMmEyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTkyMCw2ICs5MjAsMTAgQEAgcHVibGljOgogCiAgICAg
dm9pZCB0YWtlVGh1bWJuYWlsU25hcHNob3QoSW1hZ2VDYWxsYmFjazo6Q2FsbGJhY2tGdW5jdGlv
bik7CiAKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAgdm9pZCByZXBsYWNlQ29udHJv
bGxlZEltYWdlKFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPik7CisjZW5kaWYKKwogcHJpdmF0
ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2
NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNvbmZpZ3VyYXRpb24mKTsKICAgICB2b2lkIHBsYXRm
b3JtSW5pdGlhbGl6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJDb250ZXh0TWVudVByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViQ29udGV4dE1lbnVQcm94eUVmbC5jcHAKaW5kZXggODMwZDkxOS4uMmRlODgzZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVByb3h5
RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51
UHJveHlFZmwuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIFdlYkNvbnRleHRNZW51UHJveHlFZmw6On5X
ZWJDb250ZXh0TWVudVByb3h5RWZsKCkKIHsKIH0KIAotdm9pZCBXZWJDb250ZXh0TWVudVByb3h5
RWZsOjpzaG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBWZWN0
b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mKQordm9pZCBXZWJDb250ZXh0TWVudVByb3h5RWZs
OjpzaG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBWZWN0b3I8
V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mLCBjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJikK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVByb3h5RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuaAppbmRleCBiNzRhNTRmLi4yOTE4
MmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRN
ZW51UHJveHlFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRl
eHRNZW51UHJveHlFZmwuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICB+V2ViQ29u
dGV4dE1lbnVQcm94eUVmbCgpOwogCi0gICAgdm9pZCBzaG93Q29udGV4dE1lbnUoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mKTsK
KyAgICB2b2lkIHNob3dDb250ZXh0TWVudShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0
IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYsIGNvbnN0IENvbnRleHRNZW51Q29udGV4
dERhdGEmKTsKICAgICB2b2lkIGhpZGVDb250ZXh0TWVudSgpOwogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0
ay5jcHAKaW5kZXggMTlhNjk3Ny4uMGFkYzc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwCkBAIC0xMzgsNyAr
MTM4LDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudVByb3h5R3RrOjpwb3B1bGF0ZShjb25zdCBWZWN0
b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW0KICAgICB9CiB9CiAKLXZvaWQgV2ViQ29u
dGV4dE1lbnVQcm94eUd0azo6c2hvd0NvbnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBwb3NpdGlvbiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBpdGVtcykK
K3ZvaWQgV2ViQ29udGV4dE1lbnVQcm94eUd0azo6c2hvd0NvbnRleHRNZW51KGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURh
dGE+JiBpdGVtcywgY29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYpCiB7CiAgICAgaWYgKCFp
dGVtcy5pc0VtcHR5KCkpCiAgICAgICAgIHBvcHVsYXRlKGl0ZW1zKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmgKaW5kZXgg
ZGVkNGI3YS4uNGRlMzk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgog
ICAgIH0KICAgICB+V2ViQ29udGV4dE1lbnVQcm94eUd0aygpOwogCi0gICAgdmlydHVhbCB2b2lk
IHNob3dDb250ZXh0TWVudShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0IFZlY3RvcjxX
ZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYpOworICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1l
bnUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJ
dGVtRGF0YT4mLCBjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJik7CiAgICAgdmlydHVhbCB2
b2lkIGhpZGVDb250ZXh0TWVudSgpOwogCiAgICAgdm9pZCBwb3B1bGF0ZShWZWN0b3I8V2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMuaAppbmRleCA0ZmFhM2VkLi41YmE5YmI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJv
eHlNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51
UHJveHlNYWMuaApAQCAtMzIsMTAgKzMyLDEyIEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogCiBPQkpDX0NMQVNTIE5TUG9wVXBCdXR0b25DZWxsOworT0JKQ19DTEFTUyBOU1dpbmRvdzsK
IE9CSkNfQ0xBU1MgV0tWaWV3OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgU2hhcmVh
YmxlQml0bWFwOwogY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBXZWJDb250ZXh0TWVudVBy
b3h5TWFjIDogcHVibGljIFdlYkNvbnRleHRNZW51UHJveHkgewpAQCAtNDYsMTcgKzQ4LDMxIEBA
IHB1YmxpYzoKICAgICB9CiAgICAgfldlYkNvbnRleHRNZW51UHJveHlNYWMoKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25z
dCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlk
ZUNvbnRleHRNZW51KCk7CisgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudShjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYs
IGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgaGlkZUNvbnRleHRNZW51KCkgb3ZlcnJpZGU7CiAgICAgCiAgICAgdm9pZCBjb250ZXh0TWVu
dUl0ZW1TZWxlY3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJik7CiAKKyNpZiBFTkFC
TEUoSU1BR0VfQ09OVFJPTFMpCisgICAgdm9pZCBjbGVhckltYWdlU2VydmljZXNNZW51KCk7Cisg
ICAgdm9pZCByZXBsYWNlQ29udHJvbGxlZEltYWdlKENHSW1hZ2VSZWYgbmV3SW1hZ2UpOworI2Vu
ZGlmCisKKyAgICBOU1dpbmRvdyAqd2luZG93KCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgV2Vi
Q29udGV4dE1lbnVQcm94eU1hYyhXS1ZpZXcqLCBXZWJQYWdlUHJveHkqKTsKIAotICAgIHZvaWQg
cG9wdWxhdGUoY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+Jik7CisgICAgdm9p
ZCBwb3B1bGF0ZShjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mLCBjb25zdCBD
b250ZXh0TWVudUNvbnRleHREYXRhJik7CisKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisg
ICAgdm9pZCBzZXR1cEltYWdlU2VydmljZXNNZW51KFNoYXJlYWJsZUJpdG1hcCYpOworI2VuZGlm
CiAKICAgICBSZXRhaW5QdHI8TlNQb3BVcEJ1dHRvbkNlbGw+IG1fcG9wdXA7CisjaWYgRU5BQkxF
KElNQUdFX0NPTlRST0xTKQorICAgIFJldGFpblB0cjxOU01lbnU+IG1fc2VydmljZXNNZW51Owor
I2VuZGlmCiAgICAgV0tWaWV3KiBtX3dlYlZpZXc7CiAgICAgV2ViUGFnZVByb3h5KiBtX3BhZ2U7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0
TWVudVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0
TWVudVByb3h5TWFjLm1tCmluZGV4IDliYjM2MGMuLmZkZDhlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0KQEAg
LTI5LDExICsyOSwzNCBAQAogI2lmIFBMQVRGT1JNKE1BQykKIAogI2ltcG9ydCAiUGFnZUNsaWVu
dEltcGwuaCIKKyNpbXBvcnQgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2ltcG9ydCAiU3RyaW5nVXRp
bGl0aWVzLmgiCiAjaW1wb3J0ICJXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgiCiAjaW1wb3J0ICJX
S1ZpZXcuaCIKKyNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0ludFJlY3QuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNp
bXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgorCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorI2ltcG9ydCA8QXBwS2l0L05TU2hhcmlu
Z1NlcnZpY2UuaD4KKworI2lmIF9faGFzX2luY2x1ZGUoPEFwcEtpdC9OU1NoYXJpbmdTZXJ2aWNl
X1ByaXZhdGUuaD4pCisjaW1wb3J0IDxBcHBLaXQvTlNTaGFyaW5nU2VydmljZV9Qcml2YXRlLmg+
CisjZWxzZQordHlwZWRlZiBlbnVtIHsKKyAgICBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU3R5bGVN
ZW51ID0gMCwKKyAgICBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU3R5bGVSb2xsb3ZlciA9IDEsCisg
ICAgTlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxlVGV4dFNlbGVjdGlvbiA9IDIKK30gTlNTaGFy
aW5nU2VydmljZVBpY2tlclN0eWxlOworI2VuZGlmCisKK0BpbnRlcmZhY2UgTlNTaGFyaW5nU2Vy
dmljZVBpY2tlciAoRGV0YWlscykKK0Bwcm9wZXJ0eSBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU3R5
bGUgc3R5bGU7CistIChOU01lbnUgKiltZW51OworQGVuZAorI2VuZGlmCiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCkBAIC02Niw3ICs4OSw3IEBAIEBlbmQKIEBpbnRlcmZhY2UgV0tNZW51
VGFyZ2V0IDogTlNPYmplY3QgewogICAgIFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyog
X21lbnVQcm94eTsKIH0KLSsgKFdLTWVudVRhcmdldCopc2hhcmVkTWVudVRhcmdldDsKKysgKFdL
TWVudVRhcmdldCAqKXNoYXJlZE1lbnVUYXJnZXQ7CiAtIChXZWJLaXQ6OldlYkNvbnRleHRNZW51
UHJveHlNYWMqKW1lbnVQcm94eTsKIC0gKHZvaWQpc2V0TWVudVByb3h5OihXZWJLaXQ6OldlYkNv
bnRleHRNZW51UHJveHlNYWMqKW1lbnVQcm94eTsKIC0gKHZvaWQpZm9yd2FyZENvbnRleHRNZW51
QWN0aW9uOihpZClzZW5kZXI7CkBAIC0xMDQsNiArMTI3LDgwIEBAIC0gKHZvaWQpZm9yd2FyZENv
bnRleHRNZW51QWN0aW9uOihpZClzZW5kZXIKIAogQGVuZAogCisjaWYgRU5BQkxFKElNQUdFX0NP
TlRST0xTKQorQGludGVyZmFjZSBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgOiBOU09i
amVjdCA8TlNTaGFyaW5nU2VydmljZURlbGVnYXRlLCBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVs
ZWdhdGU+IHsKKyAgICBXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMqIF9tZW51UHJveHk7
CisgICAgUmV0YWluUHRyPE5TU2hhcmluZ1NlcnZpY2VQaWNrZXI+IF9waWNrZXI7Cit9CisKKysg
KFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSAqKXNoYXJlZFNoYXJpbmdTZXJ2aWNlUGlj
a2VyRGVsZWdhdGU7CistIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMqKW1lbnVQcm94
eTsKKy0gKHZvaWQpc2V0TWVudVByb3h5OihXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMq
KW1lbnVQcm94eTsKKy0gKHZvaWQpc2V0UGlja2VyOihOU1NoYXJpbmdTZXJ2aWNlUGlja2VyICop
cGlja2VyOworQGVuZAorCisvLyBGSVhNRTogV2UgcHJvYmFibHkgbmVlZCB0byBoYW5nIG9uIHRo
ZSBwaWNrZXIgaXRzZWxmIHVudGlsIHRoZSBjb250ZXh0IG1lbnUgb3BlcmF0aW9uIGlzIGRvbmUs
IGFuZCB0aGlzIG9iamVjdCB3aWxsIHByb2JhYmx5IGRvIHRoYXQuCitAaW1wbGVtZW50YXRpb24g
V0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlCisrIChXS1NoYXJpbmdTZXJ2aWNlUGlja2Vy
RGVsZWdhdGUqKXNoYXJlZFNoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUKK3sKKyAgICBzdGF0
aWMgV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlKiBkZWxlZ2F0ZSA9IFtbV0tTaGFyaW5n
U2VydmljZVBpY2tlckRlbGVnYXRlIGFsbG9jXSBpbml0XTsKKyAgICByZXR1cm4gZGVsZWdhdGU7
Cit9CisKKy0gKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyopbWVudVByb3h5Cit7Cisg
ICAgcmV0dXJuIF9tZW51UHJveHk7Cit9CisKKy0gKHZvaWQpc2V0TWVudVByb3h5OihXZWJLaXQ6
OldlYkNvbnRleHRNZW51UHJveHlNYWMqKW1lbnVQcm94eQoreworICAgIF9tZW51UHJveHkgPSBt
ZW51UHJveHk7Cit9CisKKy0gKHZvaWQpc2V0UGlja2VyOihOU1NoYXJpbmdTZXJ2aWNlUGlja2Vy
ICopcGlja2VyCit7CisgICAgX3BpY2tlciA9IHBpY2tlcjsKK30KKworLSAoaWQgPE5TU2hhcmlu
Z1NlcnZpY2VEZWxlZ2F0ZT4pc2hhcmluZ1NlcnZpY2VQaWNrZXI6KE5TU2hhcmluZ1NlcnZpY2VQ
aWNrZXIgKilzaGFyaW5nU2VydmljZVBpY2tlciBkZWxlZ2F0ZUZvclNoYXJpbmdTZXJ2aWNlOihO
U1NoYXJpbmdTZXJ2aWNlICopc2hhcmluZ1NlcnZpY2UKK3sKKyAgICByZXR1cm4gc2VsZjsKK30K
KworLSAodm9pZClzaGFyaW5nU2VydmljZTooTlNTaGFyaW5nU2VydmljZSAqKXNoYXJpbmdTZXJ2
aWNlIHdpbGxTaGFyZUl0ZW1zOihOU0FycmF5ICopaXRlbXMKK3sKKyAgICBfbWVudVByb3h5LT5j
bGVhckltYWdlU2VydmljZXNNZW51KCk7Cit9CisKKy0gKHZvaWQpc2hhcmluZ1NlcnZpY2U6KE5T
U2hhcmluZ1NlcnZpY2UgKilzaGFyaW5nU2VydmljZSBkaWRTaGFyZUl0ZW1zOihOU0FycmF5ICop
aXRlbXMKK3sKKyAgICAvLyBGSVhNRTogV2hhdCBkbyB3ZSBkbyBpZiB0aGVyZSBhcmUgbXVsdGlw
bGUgaXRlbXM/CisgICAgUmV0YWluUHRyPENHSW1hZ2VTb3VyY2VSZWY+IHNvdXJjZSA9IGFkb3B0
Q0YoQ0dJbWFnZVNvdXJjZUNyZWF0ZVdpdGhEYXRhKChDRkRhdGFSZWYpW2l0ZW1zIG9iamVjdEF0
SW5kZXg6MF0sIE5VTEwpKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBhZG9w
dENGKENHSW1hZ2VTb3VyY2VDcmVhdGVJbWFnZUF0SW5kZXgoc291cmNlLmdldCgpLCAwLCBOVUxM
KSk7CisgICAgX21lbnVQcm94eS0+cmVwbGFjZUNvbnRyb2xsZWRJbWFnZShpbWFnZS5nZXQoKSk7
Cit9CisKKy0gKE5TUmVjdClzaGFyaW5nU2VydmljZTooTlNTaGFyaW5nU2VydmljZSAqKXNoYXJp
bmdTZXJ2aWNlIHNvdXJjZUZyYW1lT25TY3JlZW5Gb3JTaGFyZUl0ZW06KGlkIDxOU1Bhc3RlYm9h
cmRXcml0aW5nPilpdGVtCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTlNa
ZXJvUmVjdDsKK30KKworLSAoTlNJbWFnZSAqKXNoYXJpbmdTZXJ2aWNlOihOU1NoYXJpbmdTZXJ2
aWNlICopc2hhcmluZ1NlcnZpY2UgdHJhbnNpdGlvbkltYWdlRm9yU2hhcmVJdGVtOihpZCA8TlNQ
YXN0ZWJvYXJkV3JpdGluZz4paXRlbSBjb250ZW50UmVjdDooTlNSZWN0ICopY29udGVudFJlY3QK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKE5TV2lu
ZG93ICopc2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFyaW5nU2VydmljZSBz
b3VyY2VXaW5kb3dGb3JTaGFyZUl0ZW1zOihOU0FycmF5ICopaXRlbXMgc2hhcmluZ0NvbnRlbnRT
Y29wZTooTlNTaGFyaW5nQ29udGVudFNjb3BlICopc2hhcmluZ0NvbnRlbnRTY29wZQoreworICAg
IHJldHVybiBfbWVudVByb3h5LT53aW5kb3coKTsKK30KKworQGVuZAorCisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OldlYkNvbnRleHRNZW51
UHJveHlNYWMoV0tWaWV3KiB3ZWJWaWV3LCBXZWJQYWdlUHJveHkqIHBhZ2UpCkBAIC0xMjAsNiAr
MjE3LDEwIEBAIFdlYkNvbnRleHRNZW51UHJveHlNYWM6On5XZWJDb250ZXh0TWVudVByb3h5TWFj
KCkKIAogdm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpjb250ZXh0TWVudUl0ZW1TZWxlY3Rl
ZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQogeworI2lmIEVOQUJMRShJTUFH
RV9DT05UUk9MUykKKyAgICBjbGVhckltYWdlU2VydmljZXNNZW51KCk7CisjZW5kaWYKKwogICAg
IG1fcGFnZS0+Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaXRlbSk7CiB9CiAKQEAgLTE4NSw4ICsy
ODYsMzYgQEAgc3RhdGljIFZlY3RvcjxSZXRhaW5QdHI8TlNNZW51SXRlbT4+IG5zTWVudUl0ZW1W
ZWN0b3IoY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW4KICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci12b2lkIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OnBvcHVsYXRlKGNvbnN0IFZlY3RvcjxXZWJD
b250ZXh0TWVudUl0ZW1EYXRhPiYgaXRlbXMpCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQor
dm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpzZXR1cEltYWdlU2VydmljZXNNZW51KFNoYXJl
YWJsZUJpdG1hcCYgaW1hZ2UpCiB7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2Ug
PSBpbWFnZS5tYWtlQ0dJbWFnZSgpOworICAgIFJldGFpblB0cjxOU0ltYWdlPiBuc0ltYWdlID0g
YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlLmdldCgpIHNp
emU6aW1hZ2Uuc2l6ZSgpXSk7CisKKyAgICBSZXRhaW5QdHI8TlNTaGFyaW5nU2VydmljZVBpY2tl
cj4gcGlja2VyID0gYWRvcHROUyhbW05TU2hhcmluZ1NlcnZpY2VQaWNrZXIgYWxsb2NdIGluaXRX
aXRoSXRlbXM6QFsgbnNJbWFnZS5nZXQoKSBdXSk7CisgICAgW3BpY2tlciBzZXRTdHlsZTpOU1No
YXJpbmdTZXJ2aWNlUGlja2VyU3R5bGVSb2xsb3Zlcl07CisgICAgW3BpY2tlciBzZXREZWxlZ2F0
ZTpbV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIHNoYXJlZFNoYXJpbmdTZXJ2aWNlUGlj
a2VyRGVsZWdhdGVdXTsKKyAgICBbW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFy
ZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlXSBzZXRQaWNrZXI6cGlja2VyLmdldCgpXTsK
KworICAgIG1fc2VydmljZXNNZW51ID0gW3BpY2tlciBtZW51XTsKK30KKwordm9pZCBXZWJDb250
ZXh0TWVudVByb3h5TWFjOjpjbGVhckltYWdlU2VydmljZXNNZW51KCkKK3sKKyAgICBbW1dLU2hh
cmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVn
YXRlXSBzZXRQaWNrZXI6bnVsbHB0cl07CisgICAgbV9zZXJ2aWNlc01lbnUgPSBudWxscHRyOwor
fQorI2VuZGlmCisKK3ZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6cG9wdWxhdGUoY29uc3Qg
VmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBpdGVtcywgY29uc3QgQ29udGV4dE1lbnVD
b250ZXh0RGF0YSYgY29udGV4dCkKK3sKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAg
aWYgKFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGltYWdlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGUoY29udGV4dC5jb250cm9sbGVkSW1hZ2VIYW5kbGUoKSkpIHsKKyAgICAgICAgc2V0dXBJbWFn
ZVNlcnZpY2VzTWVudSgqaW1hZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisK
ICAgICBpZiAobV9wb3B1cCkKICAgICAgICAgW21fcG9wdXAgcmVtb3ZlQWxsSXRlbXNdOwogICAg
IGVsc2UgewpAQCAtMTk5LDIyICszMjgsMzggQEAgdm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFj
Ojpwb3B1bGF0ZShjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW0KICAg
ICBwb3B1bGF0ZU5TTWVudShtZW51LCBuc01lbnVJdGVtVmVjdG9yKGl0ZW1zKSk7CiB9CiAKLXZv
aWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6c2hvd0NvbnRleHRNZW51KGNvbnN0IEludFBvaW50
JiBtZW51TG9jYXRpb24sIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgaXRl
bXMpCit2b2lkIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OnNob3dDb250ZXh0TWVudShjb25zdCBJ
bnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0
YT4mIGl0ZW1zLCBjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiBjb250ZXh0KQogeworI2lm
IEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyAgICBpZiAoaXRlbXMuaXNFbXB0eSgpICYmIGNvbnRl
eHQuY29udHJvbGxlZEltYWdlSGFuZGxlKCkuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKyNl
bHNlCiAgICAgaWYgKGl0ZW1zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAg
IHBvcHVsYXRlKGl0ZW1zKTsKKyNlbmRpZgorCisgICAgcG9wdWxhdGUoaXRlbXMsIGNvbnRleHQp
OworCiAgICAgW1tXS01lbnVUYXJnZXQgc2hhcmVkTWVudVRhcmdldF0gc2V0TWVudVByb3h5OnRo
aXNdOwotICAgIAorCiAgICAgTlNSZWN0IG1lbnVSZWN0ID0gTlNNYWtlUmVjdChtZW51TG9jYXRp
b24ueCgpLCBtZW51TG9jYXRpb24ueSgpLCAwLCAwKTsKLSAgICAKKworI2lmIEVOQUJMRShJTUFH
RV9DT05UUk9MUykKKyAgICBpZiAoIWNvbnRleHQuY29udHJvbGxlZEltYWdlSGFuZGxlKCkuaXNO
dWxsKCkpCisgICAgICAgIFtbV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIHNoYXJlZFNo
YXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGVdIHNldE1lbnVQcm94eTp0aGlzXTsKKworICAgIGlm
ICghbV9zZXJ2aWNlc01lbnUpCisgICAgICAgIFttX3BvcHVwIGF0dGFjaFBvcFVwV2l0aEZyYW1l
Om1lbnVSZWN0IGluVmlldzptX3dlYlZpZXddOworCisgICAgTlNNZW51KiBtZW51ID0gbV9zZXJ2
aWNlc01lbnUgPyBtX3NlcnZpY2VzTWVudS5nZXQoKSA6IFttX3BvcHVwIG1lbnVdOworI2Vsc2UK
ICAgICBbbV9wb3B1cCBhdHRhY2hQb3BVcFdpdGhGcmFtZTptZW51UmVjdCBpblZpZXc6bV93ZWJW
aWV3XTsKIAogICAgIE5TTWVudSogbWVudSA9IFttX3BvcHVwIG1lbnVdOworI2VuZGlmCiAKICAg
ICAvLyBUaGVzZSB2YWx1ZXMgd2VyZSBib3Jyb3dlZCBmcm9tIEFwcEtpdCB0byBtYXRjaCB0aGVp
ciBwbGFjZW1lbnQgb2YgdGhlIG1lbnUuCi0gICAgTlNSZWN0IHRpdGxlRnJhbWUgPSBbbV9wb3B1
cCAgdGl0bGVSZWN0Rm9yQm91bmRzOm1lbnVSZWN0XTsKKyAgICBOU1JlY3QgdGl0bGVGcmFtZSA9
IFttX3BvcHVwIHRpdGxlUmVjdEZvckJvdW5kczptZW51UmVjdF07CiAgICAgaWYgKHRpdGxlRnJh
bWUuc2l6ZS53aWR0aCA8PSAwIHx8IHRpdGxlRnJhbWUuc2l6ZS5oZWlnaHQgPD0gMCkKICAgICAg
ICAgdGl0bGVGcmFtZSA9IG1lbnVSZWN0OwogICAgIGZsb2F0IHZlcnRPZmZzZXQgPSByb3VuZGYo
KE5TTWF4WShtZW51UmVjdCkgLSBOU01heFkodGl0bGVGcmFtZSkpICsgTlNIZWlnaHQodGl0bGVG
cmFtZSkpOwpAQCAtMjI4LDcgKzM3Myw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6
c2hvd0NvbnRleHRNZW51KGNvbnN0IEludFBvaW50JiBtZW51TG9jYXRpb24sIGNvbnN0CiAKICAg
ICBXS1BvcHVwQ29udGV4dE1lbnUobWVudSwgbG9jYXRpb24pOwogCi0gICAgW21fcG9wdXAgZGlz
bWlzc1BvcFVwXTsKKyAgICBoaWRlQ29udGV4dE1lbnUoKTsKIH0KIAogdm9pZCBXZWJDb250ZXh0
TWVudVByb3h5TWFjOjpoaWRlQ29udGV4dE1lbnUoKQpAQCAtMjM2LDYgKzM4MSwyMiBAQCB2b2lk
IFdlYkNvbnRleHRNZW51UHJveHlNYWM6OmhpZGVDb250ZXh0TWVudSgpCiAgICAgW21fcG9wdXAg
ZGlzbWlzc1BvcFVwXTsKIH0KIAorTlNXaW5kb3cgKldlYkNvbnRleHRNZW51UHJveHlNYWM6Ondp
bmRvdygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX3dlYlZpZXcgd2luZG93XTsKK30KKworI2lm
IEVOQUJMRShJTUFHRV9DT05UUk9MUykKK3ZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6cmVw
bGFjZUNvbnRyb2xsZWRJbWFnZShDR0ltYWdlUmVmIG5ld0ltYWdlKQoreworICAgIEZsb2F0U2l6
ZSBuZXdJbWFnZVNpemUoQ0dJbWFnZUdldFdpZHRoKG5ld0ltYWdlKSwgQ0dJbWFnZUdldEhlaWdo
dChuZXdJbWFnZSkpOworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG5ld0JpdG1hcCA9IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGV4cGFuZGVkSW50U2l6ZShuZXdJbWFnZVNp
emUpLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOworICAgIG5ld0JpdG1hcC0+Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0KCktPmRyYXdOYXRpdmVJbWFnZShuZXdJbWFnZSwgbmV3SW1hZ2VT
aXplLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBuZXdJbWFn
ZVNpemUpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBuZXdJbWFnZVNpemUpKTsKKworICAgIG1f
cGFnZS0+cmVwbGFjZUNvbnRyb2xsZWRJbWFnZShuZXdCaXRtYXAucmVsZWFzZSgpKTsKK30KKyNl
bmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0
TWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1l
bnUuY3BwCmluZGV4IGIwMDMwZGMuLjQ4ZDFlM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcApAQCAtNTQsOSArNTQsNiBA
QCBXZWJDb250ZXh0TWVudTo6fldlYkNvbnRleHRNZW51KCkKIHZvaWQgV2ViQ29udGV4dE1lbnU6
OnNob3coKQogewogICAgIENvbnRleHRNZW51Q29udHJvbGxlciYgY29udHJvbGxlciA9IG1fcGFn
ZS0+Y29yZVBhZ2UoKS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCk7Ci0gICAgQ29udGV4dE1lbnUq
IG1lbnUgPSBjb250cm9sbGVyLmNvbnRleHRNZW51KCk7Ci0gICAgaWYgKCFtZW51KQotICAgICAg
ICByZXR1cm47CiAgICAgRnJhbWUqIGZyYW1lID0gY29udHJvbGxlci5oaXRUZXN0UmVzdWx0KCku
aW5uZXJOb2RlRnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CkBAIC04
MCw2ICs3NywxMyBAQCB2b2lkIFdlYkNvbnRleHRNZW51OjppdGVtU2VsZWN0ZWQoY29uc3QgV2Vi
Q29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmNvbnRl
eHRNZW51Q29udHJvbGxlcigpLmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKCZjb3JlSXRlbSk7CiB9
CiAKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCit2b2lkIFdlYkNvbnRleHRNZW51OjpyZXBs
YWNlQ29udHJvbGxlZEltYWdlKFBhc3NSZWZQdHI8SW1hZ2U+IG5ld0ltYWdlKQoreworICAgIG1f
cGFnZS0+Y29yZVBhZ2UoKS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCkucmVwbGFjZUNvbnRyb2xs
ZWRJbWFnZShuZXdJbWFnZSk7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJDb250ZXh0TWVudTo6bWVu
dUl0ZW1zV2l0aFVzZXJEYXRhKFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiAmbWVudUl0
ZW1zLCBSZWZQdHI8QVBJOjpPYmplY3Q+JiB1c2VyRGF0YSkgY29uc3QKIHsKICAgICBDb250ZXh0
TWVudUNvbnRyb2xsZXImIGNvbnRyb2xsZXIgPSBtX3BhZ2UtPmNvcmVQYWdlKCktPmNvbnRleHRN
ZW51Q29udHJvbGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkNvbnRleHRNZW51LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViQ29udGV4dE1lbnUuaAppbmRleCA3NWVkN2U2Li5kOWIxODgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuaApAQCAtMjgs
OCArMjgsMTMgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEltYWdlOworfQorCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgU2hhcmVhYmxlQml0bWFwOwogY2xhc3MgV2ViUGFn
ZTsKIAogY2xhc3MgV2ViQ29udGV4dE1lbnUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJDb250ZXh0
TWVudT4gewpAQCAtNDUsNiArNTAsMTAgQEAgcHVibGljOgogICAgIHZvaWQgaXRlbVNlbGVjdGVk
KGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmKTsKICAgICBWZWN0b3I8V2ViQ29udGV4dE1l
bnVJdGVtRGF0YT4gaXRlbXMoKSBjb25zdDsKIAorI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykK
KyAgICB2b2lkIHJlcGxhY2VDb250cm9sbGVkSW1hZ2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpJbWFn
ZT4pOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViQ29udGV4dE1lbnUoV2ViUGFnZSopOwog
ICAgIHZvaWQgbWVudUl0ZW1zV2l0aFVzZXJEYXRhKFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1E
YXRhPiYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBlNzJmMDM1Li40YzQzZjMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zMDgx
LDYgKzMwODEsMTQgQEAgdm9pZCBXZWJQYWdlOjpkaWRTZWxlY3RJdGVtRnJvbUFjdGl2ZUNvbnRl
eHRNZW51KGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGkKIH0KICNlbmRpZgogCisjaWYg
RU5BQkxFKElNQUdFX0NPTlRST0xTKQordm9pZCBXZWJQYWdlOjpyZXBsYWNlQ29udHJvbGxlZElt
YWdlKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBiaXRtYXBIYW5kbGUpCit7CisgICAg
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUo
Yml0bWFwSGFuZGxlKTsKKyAgICBtX2NvbnRleHRNZW51LT5yZXBsYWNlQ29udHJvbGxlZEltYWdl
KGJpdG1hcC0+Y3JlYXRlSW1hZ2UoKSk7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQYWdlOjpyZXBs
YWNlU2VsZWN0aW9uV2l0aFRleHQoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHRleHQpCiB7
CiAgICAgYm9vbCBzZWxlY3RSZXBsYWNlbWVudCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA2OTI5YjhmLi43MzM4ZGQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTc0Miw2ICs3NDIs
MTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXRCeXRlY29kZVByb2ZpbGUodWludDY0X3QgY2Fs
bGJhY2tJRCk7CiAKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAgdm9pZCByZXBsYWNl
Q29udHJvbGxlZEltYWdlKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJik7CisjZW5kaWYK
KwogcHJpdmF0ZToKICAgICBXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDljMzcwZTUuLmZiYWU5NTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCkBAIC0zMzksNCArMzM5LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgCiAgICAgVGFrZVRodW1ibmFpbFNuYXBzaG90KHVpbnQ2NF90IGNhbGxi
YWNrSUQpCiAKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAgUmVwbGFjZUNvbnRyb2xs
ZWRJbWFnZShXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIG5ld0JpdG1hcEhhbmRsZSkK
KyNlbmRpZgogfQo=
</data>
<flag name="commit-queue"
          id="251349"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227127</attachid>
            <date>2014-03-18 16:18:40 -0700</date>
            <delta_ts>2014-03-18 16:43:59 -0700</delta_ts>
            <desc>Patch v3 - More build fixes</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>30606</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAxM2JkZjg4Li5kZDRlNGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcg
QEAKKzIwMTQtMDMtMTggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIE1ha2UgaW1hZ2UgY29udHJvbHMgbWVudSB3b3JrIGluIFdLMgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMTYyOTQ0MTI+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTMwNDI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9tYWMv
U2hhcmVkTWVtb3J5TWFjLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5k
bGU6On5IYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZTo6Y2xl
YXIpOgorCisgICAgICAgICogUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGU6On5IYW5kbGUpOgorICAgICAgICAo
V2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZTo6Y2xlYXIpOgorCisgICAgICAgICogU2hhcmVk
L0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0TWVu
dUNvbnRleHREYXRhOjpDb250ZXh0TWVudUNvbnRleHREYXRhKToKKyAgICAgICAgKFdlYktpdDo6
Q29udGV4dE1lbnVDb250ZXh0RGF0YTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6Q29u
dGV4dE1lbnVDb250ZXh0RGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1l
bnVDb250ZXh0RGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvQ29udGV4dE1lbnVDb250
ZXh0RGF0YS5oOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0TWVudUNvbnRleHREYXRhOjpjb250
cm9sbGVkSW1hZ2VIYW5kbGUpOgorCisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlOjpjbGVhcik6Cisg
ICAgICAgICogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJDb250ZXh0TWVudVByb3h5Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnRlcm5hbFNob3dDb250ZXh0
TWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVwbGFjZUNvbnRyb2xsZWRJ
bWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCisgICAgICAgICog
VUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVByb3h5RWZsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbDo6c2hvd0NvbnRleHRNZW51KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuaDoKKworICAgICAgICAqIFVJUHJv
Y2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHRNZW51UHJveHlHdGs6OnNob3dDb250ZXh0TWVudSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmg6CisKKyAgICAgICAgQWRkIGEgc2hhcmlu
ZyBzZXJ2aWNlIGNvbnRleHQgbWVudSB0aGF0IGxpdmVzIHNpZGUtYnktc2lkZSB3aXRoIHRoZSBu
b3JtYWwgb25lOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1h
Yy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbToK
KyAgICAgICAgKCtbV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIHNoYXJlZFNoYXJpbmdT
ZXJ2aWNlUGlja2VyRGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tTaGFyaW5nU2VydmljZVBpY2tl
ckRlbGVnYXRlIFdlYktpdDo6XSk6CisgICAgICAgICgtW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJE
ZWxlZ2F0ZSBzZXRNZW51UHJveHk6V2ViS2l0OjpdKToKKyAgICAgICAgKC1bV0tTaGFyaW5nU2Vy
dmljZVBpY2tlckRlbGVnYXRlIHNldFBpY2tlcjpdKToKKyAgICAgICAgKC1bV0tTaGFyaW5nU2Vy
dmljZVBpY2tlckRlbGVnYXRlIHNoYXJpbmdTZXJ2aWNlUGlja2VyOmRlbGVnYXRlRm9yU2hhcmlu
Z1NlcnZpY2U6XSk6CisgICAgICAgICgtW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBz
aGFyaW5nU2VydmljZTp3aWxsU2hhcmVJdGVtczpdKToKKyAgICAgICAgKC1bV0tTaGFyaW5nU2Vy
dmljZVBpY2tlckRlbGVnYXRlIHNoYXJpbmdTZXJ2aWNlOmRpZFNoYXJlSXRlbXM6XSk6CisgICAg
ICAgICgtW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyaW5nU2VydmljZTpzb3Vy
Y2VGcmFtZU9uU2NyZWVuRm9yU2hhcmVJdGVtOl0pOgorICAgICAgICAoLVtXS1NoYXJpbmdTZXJ2
aWNlUGlja2VyRGVsZWdhdGUgc2hhcmluZ1NlcnZpY2U6dHJhbnNpdGlvbkltYWdlRm9yU2hhcmVJ
dGVtOmNvbnRlbnRSZWN0Ol0pOgorICAgICAgICAoLVtXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVs
ZWdhdGUgc2hhcmluZ1NlcnZpY2U6c291cmNlV2luZG93Rm9yU2hhcmVJdGVtczpzaGFyaW5nQ29u
dGVudFNjb3BlOl0pOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjpj
b250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51
UHJveHlNYWM6OnNldHVwSW1hZ2VTZXJ2aWNlc01lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b250ZXh0TWVudVByb3h5TWFjOjpjbGVhckltYWdlU2VydmljZXNNZW51KToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6cG9wdWxhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjpzaG93Q29udGV4dE1lbnUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjp3aW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0TWVudVByb3h5TWFjOjpyZXBsYWNlQ29udHJvbGxlZEltYWdlKToKKworICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbnRleHRNZW51OjpzaG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1l
bnU6OnJlcGxhY2VDb250cm9sbGVkSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJDb250ZXh0TWVudS5oOgorCisgICAgICAgIFRlYWNoIHRoZSBXZWJQcm9jZXNzIGhvdyB0
byBhY2NlcHQgdGhlIHJlcGxhY2VkIGltYWdlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVwbGFjZUNvbnRyb2xs
ZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxNC0wMy0x
OCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT046IFZpc2l0ZWQgbGluayBjb2xvcmluZyBzZWVtcyB0byBiZSBjb21wbGV0ZWx5IGJyb2tl
biBpbiB0aXAgb2YgdHJlZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vU2hh
cmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRl
eCBlZmE1ZjAwLi45ZTI1ZDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9T
aGFyZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9TaGFyZWRNZW1vcnku
aApAQCAtNTcsNiArNTcsOCBAQCBwdWJsaWM6CiAKICAgICAgICAgYm9vbCBpc051bGwoKSBjb25z
dDsKIAorICAgICAgICB2b2lkIGNsZWFyKCk7CisKICAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpB
cmd1bWVudEVuY29kZXImKSBjb25zdDsKICAgICAgICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6
QXJndW1lbnREZWNvZGVyJiwgSGFuZGxlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL21hYy9TaGFyZWRNZW1vcnlNYWMuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vbWFjL1NoYXJlZE1lbW9yeU1hYy5jcHAKaW5kZXggNDZhNDNmMy4uYzc3NGEyNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1NoYXJlZE1lbW9yeU1hYy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1NoYXJlZE1lbW9yeU1hYy5jcHAKQEAgLTQ2
LDggKzQ2LDcgQEAgU2hhcmVkTWVtb3J5OjpIYW5kbGU6OkhhbmRsZSgpCiAKIFNoYXJlZE1lbW9y
eTo6SGFuZGxlOjp+SGFuZGxlKCkKIHsKLSAgICBpZiAobV9wb3J0KQotICAgICAgICBtYWNoX3Bv
cnRfZGVhbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBtX3BvcnQpOworICAgIGNsZWFyKCk7CiB9
CiAKIGJvb2wgU2hhcmVkTWVtb3J5OjpIYW5kbGU6OmlzTnVsbCgpIGNvbnN0CkBAIC01NSw2ICs1
NCwxNSBAQCBib29sIFNoYXJlZE1lbW9yeTo6SGFuZGxlOjppc051bGwoKSBjb25zdAogICAgIHJl
dHVybiAhbV9wb3J0OwogfQogCit2b2lkIFNoYXJlZE1lbW9yeTo6SGFuZGxlOjpjbGVhcigpCit7
CisgICAgaWYgKG1fcG9ydCkKKyAgICAgICAgbWFjaF9wb3J0X2RlYWxsb2NhdGUobWFjaF90YXNr
X3NlbGYoKSwgbV9wb3J0KTsKKworICAgIG1fcG9ydCA9IE1BQ0hfUE9SVF9OVUxMOworICAgIG1f
c2l6ZSA9IDA7Cit9CisKIHZvaWQgU2hhcmVkTWVtb3J5OjpIYW5kbGU6OmVuY29kZShJUEM6OkFy
Z3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19j
YXN0PHVpbnQ2NF90PihtX3NpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3Vu
aXgvU2hhcmVkTWVtb3J5VW5peC5jcHAKaW5kZXggZjEzOTJjZC4uNWVjODZiMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCkBAIC01
NCw2ICs1NCwxMSBAQCBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6SGFuZGxlKCkKIAogU2hhcmVkTWVt
b3J5OjpIYW5kbGU6On5IYW5kbGUoKQogeworCWNsZWFyKCk7Cit9CisKK3ZvaWQgU2hhcmVkTWVt
b3J5OjpIYW5kbGU6OmNsZWFyKCkKK3sKICAgICBpZiAoIWlzTnVsbCgpKQogICAgICAgICBjbG9z
ZVdpdGhSZXRyeShtX2ZpbGVEZXNjcmlwdG9yKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcAppbmRleCBkNmZhYWQ2Ny4uZGNmNzNlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNw
cApAQCAtMzEsMzEgKzMxLDU1IEBACiAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Q29udGV4dC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogQ29udGV4dE1lbnVDb250ZXh0RGF0YTo6Q29udGV4dE1lbnVD
b250ZXh0RGF0YSgpCi0jaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQotICAgIDogbV9pc0ltYWdl
Q29udHJvbChmYWxzZSkKLSNlbmRpZgogewogfQogCiBDb250ZXh0TWVudUNvbnRleHREYXRhOjpD
b250ZXh0TWVudUNvbnRleHREYXRhKGNvbnN0IENvbnRleHRNZW51Q29udGV4dCYgY29udGV4dCkK
ICAgICA6IG1fd2ViSGl0VGVzdFJlc3VsdERhdGEoV2ViSGl0VGVzdFJlc3VsdDo6RGF0YShjb250
ZXh0LmhpdFRlc3RSZXN1bHQoKSkpCit7CiAjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQotICAg
ICwgbV9pc0ltYWdlQ29udHJvbChjb250ZXh0LmNvbnRyb2xsZWRJbWFnZSgpKQorICAgIEltYWdl
KiBpbWFnZSA9IGNvbnRleHQuY29udHJvbGxlZEltYWdlKCk7CisgICAgaWYgKCFpbWFnZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2UtPnNpemUoKSwgU2hhcmVhYmxlQml0
bWFwOjpTdXBwb3J0c0FscGhhKTsKKyAgICBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgp
LT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFBvaW50KCkpOworICAg
IGJpdG1hcC0+Y3JlYXRlSGFuZGxlKG1fY29udHJvbGxlZEltYWdlSGFuZGxlKTsKICNlbmRpZgor
fQorCitDb250ZXh0TWVudUNvbnRleHREYXRhOjpDb250ZXh0TWVudUNvbnRleHREYXRhKGNvbnN0
IENvbnRleHRNZW51Q29udGV4dERhdGEmIG90aGVyKQogeworICAgICp0aGlzID0gb3RoZXI7Cit9
CisKK0NvbnRleHRNZW51Q29udGV4dERhdGEmIENvbnRleHRNZW51Q29udGV4dERhdGE6Om9wZXJh
dG9yPShjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiBvdGhlcikKK3sKKyAgICBtX3dlYkhp
dFRlc3RSZXN1bHREYXRhID0gb3RoZXIubV93ZWJIaXRUZXN0UmVzdWx0RGF0YTsKKyNpZiBFTkFC
TEUoSU1BR0VfQ09OVFJPTFMpCisgICAgbV9jb250cm9sbGVkSW1hZ2VIYW5kbGUuY2xlYXIoKTsK
KworICAgIGlmICghb3RoZXIubV9jb250cm9sbGVkSW1hZ2VIYW5kbGUuaXNOdWxsKCkpIHsKKyAg
ICAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGUob3RoZXIubV9jb250cm9sbGVkSW1hZ2VIYW5kbGUpOworICAgICAgICBiaXRtYXAtPmNy
ZWF0ZUhhbmRsZShtX2NvbnRyb2xsZWRJbWFnZUhhbmRsZSk7CisgICAgfQorI2VuZGlmCisKKyAg
ICByZXR1cm4gKnRoaXM7CiB9CiAKIHZvaWQgQ29udGV4dE1lbnVDb250ZXh0RGF0YTo6ZW5jb2Rl
KElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwg
bV93ZWJIaXRUZXN0UmVzdWx0RGF0YTsKICNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCi0gICAg
ZW5jb2RlciA8PCBtX2lzSW1hZ2VDb250cm9sOworICAgIGVuY29kZXIgPDwgbV9jb250cm9sbGVk
SW1hZ2VIYW5kbGU7CiAjZW5kaWYKIH0KIApAQCAtNjUsNyArODksNyBAQCBib29sIENvbnRleHRN
ZW51Q29udGV4dERhdGE6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgQ29u
dGV4dE1lbnVDbwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogI2lmIEVOQUJMRShJ
TUFHRV9DT05UUk9MUykKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbnRleHRNZW51Q29udGV4
dERhdGEubV9pc0ltYWdlQ29udHJvbCkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb250ZXh0
TWVudUNvbnRleHREYXRhLm1fY29udHJvbGxlZEltYWdlSGFuZGxlKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db250
ZXh0TWVudUNvbnRleHREYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29udGV4dE1lbnVD
b250ZXh0RGF0YS5oCmluZGV4IDg5NDkzMzkuLjZjNmFlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuaApAQCAtMjksNiArMjksNyBAQAogCiAj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAKKyNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIK
ICNpbmNsdWRlICJXZWJIaXRUZXN0UmVzdWx0LmgiCiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtNDYs
MTEgKzQ3LDE0IEBAIGNsYXNzIENvbnRleHRNZW51Q29udGV4dERhdGEgewogcHVibGljOgogICAg
IENvbnRleHRNZW51Q29udGV4dERhdGEoKTsKICAgICBDb250ZXh0TWVudUNvbnRleHREYXRhKGNv
bnN0IFdlYkNvcmU6OkNvbnRleHRNZW51Q29udGV4dCYpOworCisgICAgQ29udGV4dE1lbnVDb250
ZXh0RGF0YShjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJik7CisgICAgQ29udGV4dE1lbnVD
b250ZXh0RGF0YSYgb3BlcmF0b3I9KGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmKTsKICAg
ICAKICAgICBjb25zdCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhJiB3ZWJIaXRUZXN0UmVzdWx0RGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViSGl0VGVzdFJlc3VsdERhdGE7IH0KIAogI2lmIEVOQUJM
RShJTUFHRV9DT05UUk9MUykKLSAgICBib29sIGlzSW1hZ2VDb250cm9sKCkgY29uc3QgeyByZXR1
cm4gbV9pc0ltYWdlQ29udHJvbDsgfQorICAgIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxl
JiBjb250cm9sbGVkSW1hZ2VIYW5kbGUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRyb2xsZWRJbWFn
ZUhhbmRsZTsgfQogI2VuZGlmCiAKICAgICB2b2lkIGVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2Rl
ciYpIGNvbnN0OwpAQCAtNjEsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIFdlYkhpdFRlc3RSZXN1
bHQ6OkRhdGEgbV93ZWJIaXRUZXN0UmVzdWx0RGF0YTsKIAogI2lmIEVOQUJMRShJTUFHRV9DT05U
Uk9MUykKLSAgICBib29sIG1faXNJbWFnZUNvbnRyb2w7CisgICAgU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUgbV9jb250cm9sbGVkSW1hZ2VIYW5kbGU7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKaW5kZXggOWViNDc1OS4uMmEyOGNhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKQEAgLTU3LDYgKzU3LDEz
IEBAIGJvb2wgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVj
b2RlciYgZGVjb2RlciwgSGFuZGxlJiBoYW5kCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQg
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OmNsZWFyKCkKK3sKKyAgICBtX2hhbmRsZS5jbGVhcigp
OworICAgIG1fc2l6ZSA9IEludFNpemUoKTsKKyAgICBtX2ZsYWdzID0gRmxhZzo6Tm9GbGFnczsK
K30KKwogUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
KGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzKQogewogICAgIHNpemVfdCBudW1CeXRl
cyA9IG51bUJ5dGVzRm9yU2l6ZShzaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9TaGFyZWFibGVCaXRtYXAuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVC
aXRtYXAuaAppbmRleCA0NzE2MWYwLi5hMTk2ZGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1No
YXJlYWJsZUJpdG1hcC5oCkBAIC02Myw2ICs2Myw4IEBAIHB1YmxpYzoKIAogICAgICAgICBib29s
IGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlLmlzTnVsbCgpOyB9CiAKKyAgICAgICAg
dm9pZCBjbGVhcigpOworCiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVy
JikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyBib29sIGRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2Rl
ciYsIEhhbmRsZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29udGV4dE1lbnVQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRN
ZW51UHJveHkuaAppbmRleCAwOTg1NTJkLi41NTQ2ZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVudVByb3h5LmgKQEAgLTM2LDEzICszNiwxNCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBDb250ZXh0TWVu
dUNvbnRleHREYXRhOwogY2xhc3MgV2ViQ29udGV4dE1lbnVJdGVtRGF0YTsKIAogY2xhc3MgV2Vi
Q29udGV4dE1lbnVQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvbnRleHRNZW51UHJveHk+
IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJDb250ZXh0TWVudVByb3h5KCk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29u
c3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBpdGVtcykgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBW
ZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mLCBjb25zdCBDb250ZXh0TWVudUNvbnRleHRE
YXRhJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoaWRlQ29udGV4dE1lbnUoKSA9IDA7CiAKIHBy
b3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
ZjAzYWNmZS4uNDQ5ZGE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTMyOTMsMjIgKzMyOTMsMzIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmludGVybmFs
U2hvd0NvbnRleHRNZW51KGNvbnN0IEludFBvaW50JiBtZW51TG9jYXRpb24sIGNvbnN0IEMKICAg
ICAvLyBVbmxlc3MgdGhpcyBpcyBhbiBpbWFnZSBjb250cm9sLCBnaXZlIHRoZSBQYWdlQ29udGV4
dE1lbnVDbGllbnQgb25lIGxhc3Qgc3dpcGUgYXQgY2hhbmdpbmcgdGhlIG1lbnUuCiAgICAgVmVj
dG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IGl0ZW1zOwogICAgIGJvb2wgdXNlUHJvcG9zZWRJ
dGVtcyA9IHRydWU7Ci0KKyAgICBib29sIGFza0NsaWVudFRvQ2hhbmdlTWVudSA9IHRydWU7CiAj
aWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQotICAgIGlmICghY29udGV4dE1lbnVDb250ZXh0RGF0
YS5pc0ltYWdlQ29udHJvbCgpICYmIG1fY29udGV4dE1lbnVDbGllbnQuZ2V0Q29udGV4dE1lbnVG
cm9tUHJvcG9zZWRNZW51KHRoaXMsIHByb3Bvc2VkSXRlbXMsIGl0ZW1zLCBjb250ZXh0TWVudUNv
bnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCksIHVzZXJEYXRhLmdldCgpKSkgewotI2Vs
c2UKLSAgICBpZiAobV9jb250ZXh0TWVudUNsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3Nl
ZE1lbnUodGhpcywgcHJvcG9zZWRJdGVtcywgaXRlbXMsIGNvbnRleHRNZW51Q29udGV4dERhdGEu
d2ViSGl0VGVzdFJlc3VsdERhdGEoKSwgdXNlckRhdGEuZ2V0KCkpKSB7CisgICAgaWYgKCFjb250
ZXh0TWVudUNvbnRleHREYXRhLmNvbnRyb2xsZWRJbWFnZUhhbmRsZSgpLmlzTnVsbCgpKQorICAg
ICAgICBhc2tDbGllbnRUb0NoYW5nZU1lbnUgPSBmYWxzZTsKICNlbmRpZgorCisgICAgaWYgKGFz
a0NsaWVudFRvQ2hhbmdlTWVudSAmJiBtX2NvbnRleHRNZW51Q2xpZW50LmdldENvbnRleHRNZW51
RnJvbVByb3Bvc2VkTWVudSh0aGlzLCBwcm9wb3NlZEl0ZW1zLCBpdGVtcywgY29udGV4dE1lbnVD
b250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLCB1c2VyRGF0YS5nZXQoKSkpCiAgICAg
ICAgIHVzZVByb3Bvc2VkSXRlbXMgPSBmYWxzZTsKLSAgICB9CiAgICAgCiAgICAgY29uc3QgVmVj
dG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBpdGVtc1RvU2hvdyA9IHVzZVByb3Bvc2VkSXRl
bXMgPyBwcm9wb3NlZEl0ZW1zIDogaXRlbXM7CiAgICAgaWYgKCFtX2NvbnRleHRNZW51Q2xpZW50
LnNob3dDb250ZXh0TWVudSh0aGlzLCBtZW51TG9jYXRpb24sIGl0ZW1zVG9TaG93KSkKLSAgICAg
ICAgbV9hY3RpdmVDb250ZXh0TWVudS0+c2hvd0NvbnRleHRNZW51KG1lbnVMb2NhdGlvbiwgaXRl
bXNUb1Nob3cpOwotICAgIAorICAgICAgICBtX2FjdGl2ZUNvbnRleHRNZW51LT5zaG93Q29udGV4
dE1lbnUobWVudUxvY2F0aW9uLCBpdGVtc1RvU2hvdywgY29udGV4dE1lbnVDb250ZXh0RGF0YSk7
CisKICAgICBtX2NvbnRleHRNZW51Q2xpZW50LmNvbnRleHRNZW51RGlzbWlzc2VkKHRoaXMpOwog
fQogCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQordm9pZCBXZWJQYWdlUHJveHk6OnJlcGxh
Y2VDb250cm9sbGVkSW1hZ2UoUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG5ld0JpdG1hcCkK
K3sKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBuZXdCaXRtYXA7CisgICAg
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgYml0bWFwSGFuZGxlOworICAgIGJpdG1hcC0+Y3JlYXRl
SGFuZGxlKGJpdG1hcEhhbmRsZSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpSZXBsYWNlQ29udHJvbGxlZEltYWdlKGJpdG1hcEhhbmRsZSksIG1fcGFnZUlEKTsKK30K
KyNlbmRpZgorCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29u
c3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKIHsKICAgICAvLyBBcHBsaWNhdGlvbiBj
dXN0b20gaXRlbXMgZG9uJ3QgbmVlZCB0byByb3VuZC10cmlwIHRocm91Z2ggdG8gV2ViQ29yZSBp
biB0aGUgV2ViUHJvY2Vzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApp
bmRleCA2MjVjNmM1Li4yMzJhMjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCkBAIC05MjAsNiArOTIwLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdGFrZVRodW1i
bmFpbFNuYXBzaG90KEltYWdlQ2FsbGJhY2s6OkNhbGxiYWNrRnVuY3Rpb24pOwogCisjaWYgRU5B
QkxFKElNQUdFX0NPTlRST0xTKQorICAgIHZvaWQgcmVwbGFjZUNvbnRyb2xsZWRJbWFnZShQYXNz
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4pOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViUGFn
ZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIGNv
bnN0IFdlYlBhZ2VDb25maWd1cmF0aW9uJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1l
bnVQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRN
ZW51UHJveHlFZmwuY3BwCmluZGV4IDgzMGQ5MTkuLjJkZTg4M2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQcm94eUVmbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVByb3h5RWZsLmNwcApA
QCAtNDcsNyArNDcsNyBAQCBXZWJDb250ZXh0TWVudVByb3h5RWZsOjp+V2ViQ29udGV4dE1lbnVQ
cm94eUVmbCgpCiB7CiB9CiAKLXZvaWQgV2ViQ29udGV4dE1lbnVQcm94eUVmbDo6c2hvd0NvbnRl
eHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRN
ZW51SXRlbURhdGE+JikKK3ZvaWQgV2ViQ29udGV4dE1lbnVQcm94eUVmbDo6c2hvd0NvbnRleHRN
ZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51
SXRlbURhdGE+JiwgY29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViQ29udGV4dE1lbnVQcm94eUVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJDb250ZXh0TWVudVByb3h5RWZsLmgKaW5kZXggYjc0YTU0Zi4uMjkxODJiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVByb3h5RWZsLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVByb3h5RWZs
LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgfldlYkNvbnRleHRNZW51UHJveHlF
ZmwoKTsKIAotICAgIHZvaWQgc2hvd0NvbnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+Jik7CisgICAgdm9pZCBzaG93
Q29udGV4dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBWZWN0b3I8V2ViQ29u
dGV4dE1lbnVJdGVtRGF0YT4mLCBjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJik7CiAgICAg
dm9pZCBoaWRlQ29udGV4dE1lbnUoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwCmluZGV4IDE5
YTY5NzcuLjBhZGM3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
V2ViQ29udGV4dE1lbnVQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQg
V2ViQ29udGV4dE1lbnVQcm94eUd0azo6cG9wdWxhdGUoY29uc3QgVmVjdG9yPFdlYkNvbnRleHRN
ZW51SXRlbURhdGE+JiBpdGVtCiAgICAgfQogfQogCi12b2lkIFdlYkNvbnRleHRNZW51UHJveHlH
dGs6OnNob3dDb250ZXh0TWVudShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNv
bnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgaXRlbXMpCit2b2lkIFdlYkNvbnRl
eHRNZW51UHJveHlHdGs6OnNob3dDb250ZXh0TWVudShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
cG9zaXRpb24sIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgaXRlbXMsIGNv
bnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmKQogewogICAgIGlmICghaXRlbXMuaXNFbXB0eSgp
KQogICAgICAgICBwb3B1bGF0ZShpdGVtcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5oCmluZGV4IGRlZDRiN2EuLjRkZTM5
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1l
bnVQcm94eUd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4
dE1lbnVQcm94eUd0ay5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgfldl
YkNvbnRleHRNZW51UHJveHlHdGsoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1l
bnUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJ
dGVtRGF0YT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiwgY29u
c3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYpOwogICAgIHZpcnR1YWwgdm9pZCBoaWRlQ29udGV4
dE1lbnUoKTsKIAogICAgIHZvaWQgcG9wdWxhdGUoVmVjdG9yPFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbT4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29u
dGV4dE1lbnVQcm94eU1hYy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250
ZXh0TWVudVByb3h5TWFjLmgKaW5kZXggNGZhYTNlZC4uNWJhOWJiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLmgKQEAg
LTMyLDEwICszMiwxMiBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogT0JKQ19DTEFT
UyBOU1BvcFVwQnV0dG9uQ2VsbDsKK09CSkNfQ0xBU1MgTlNXaW5kb3c7CiBPQkpDX0NMQVNTIFdL
VmlldzsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFNoYXJlYWJsZUJpdG1hcDsKIGNs
YXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eU1hYyA6IHB1Ymxp
YyBXZWJDb250ZXh0TWVudVByb3h5IHsKQEAgLTQ2LDE3ICs0OCwzMSBAQCBwdWJsaWM6CiAgICAg
fQogICAgIH5XZWJDb250ZXh0TWVudVByb3h5TWFjKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2hv
d0NvbnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgVmVjdG9yPFdlYkNv
bnRleHRNZW51SXRlbURhdGE+Jik7Ci0gICAgdmlydHVhbCB2b2lkIGhpZGVDb250ZXh0TWVudSgp
OworICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mLCBjb25zdCBDb250ZXh0
TWVudUNvbnRleHREYXRhJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGhpZGVDb250ZXh0
TWVudSgpIG92ZXJyaWRlOwogICAgIAogICAgIHZvaWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQo
Y29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYpOwogCisjaWYgRU5BQkxFKElNQUdFX0NPTlRS
T0xTKQorICAgIHZvaWQgY2xlYXJJbWFnZVNlcnZpY2VzTWVudSgpOworICAgIHZvaWQgcmVwbGFj
ZUNvbnRyb2xsZWRJbWFnZShDR0ltYWdlUmVmIG5ld0ltYWdlKTsKKyNlbmRpZgorCisgICAgTlNX
aW5kb3cgKndpbmRvdygpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFdlYkNvbnRleHRNZW51UHJv
eHlNYWMoV0tWaWV3KiwgV2ViUGFnZVByb3h5Kik7CiAKLSAgICB2b2lkIHBvcHVsYXRlKGNvbnN0
IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYpOworICAgIHZvaWQgcG9wdWxhdGUoY29u
c3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiwgY29uc3QgQ29udGV4dE1lbnVDb250
ZXh0RGF0YSYpOworCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorICAgIHZvaWQgc2V0dXBJ
bWFnZVNlcnZpY2VzTWVudShTaGFyZWFibGVCaXRtYXAmKTsKKyNlbmRpZgogCiAgICAgUmV0YWlu
UHRyPE5TUG9wVXBCdXR0b25DZWxsPiBtX3BvcHVwOworI2lmIEVOQUJMRShJTUFHRV9DT05UUk9M
UykKKyAgICBSZXRhaW5QdHI8TlNNZW51PiBtX3NlcnZpY2VzTWVudTsKKyNlbmRpZgogICAgIFdL
VmlldyogbV93ZWJWaWV3OwogICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5t
bQppbmRleCA5YmIzNjBjLi5mZGQ4ZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCkBAIC0yOSwxMSArMjksMzQg
QEAKICNpZiBQTEFURk9STShNQUMpCiAKICNpbXBvcnQgIlBhZ2VDbGllbnRJbXBsLmgiCisjaW1w
b3J0ICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbXBvcnQgIlN0cmluZ1V0aWxpdGllcy5oIgogI2lt
cG9ydCAiV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIgogI2ltcG9ydCAiV0tWaWV3LmgiCisjaW1w
b3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9JbnRSZWN0
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW1wb3J0IDxXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIEVOQUJM
RShJTUFHRV9DT05UUk9MUykKKyNpbXBvcnQgPEFwcEtpdC9OU1NoYXJpbmdTZXJ2aWNlLmg+CisK
KyNpZiBfX2hhc19pbmNsdWRlKDxBcHBLaXQvTlNTaGFyaW5nU2VydmljZV9Qcml2YXRlLmg+KQor
I2ltcG9ydCA8QXBwS2l0L05TU2hhcmluZ1NlcnZpY2VfUHJpdmF0ZS5oPgorI2Vsc2UKK3R5cGVk
ZWYgZW51bSB7CisgICAgTlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxlTWVudSA9IDAsCisgICAg
TlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxlUm9sbG92ZXIgPSAxLAorICAgIE5TU2hhcmluZ1Nl
cnZpY2VQaWNrZXJTdHlsZVRleHRTZWxlY3Rpb24gPSAyCit9IE5TU2hhcmluZ1NlcnZpY2VQaWNr
ZXJTdHlsZTsKKyNlbmRpZgorCitAaW50ZXJmYWNlIE5TU2hhcmluZ1NlcnZpY2VQaWNrZXIgKERl
dGFpbHMpCitAcHJvcGVydHkgTlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxlIHN0eWxlOworLSAo
TlNNZW51ICopbWVudTsKK0BlbmQKKyNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IApAQCAtNjYsNyArODksNyBAQCBAZW5kCiBAaW50ZXJmYWNlIFdLTWVudVRhcmdldCA6IE5TT2Jq
ZWN0IHsKICAgICBXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMqIF9tZW51UHJveHk7CiB9
Ci0rIChXS01lbnVUYXJnZXQqKXNoYXJlZE1lbnVUYXJnZXQ7CisrIChXS01lbnVUYXJnZXQgKilz
aGFyZWRNZW51VGFyZ2V0OwogLSAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjKiltZW51
UHJveHk7CiAtICh2b2lkKXNldE1lbnVQcm94eTooV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5
TWFjKiltZW51UHJveHk7CiAtICh2b2lkKWZvcndhcmRDb250ZXh0TWVudUFjdGlvbjooaWQpc2Vu
ZGVyOwpAQCAtMTA0LDYgKzEyNyw4MCBAQCAtICh2b2lkKWZvcndhcmRDb250ZXh0TWVudUFjdGlv
bjooaWQpc2VuZGVyCiAKIEBlbmQKIAorI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKK0BpbnRl
cmZhY2UgV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIDogTlNPYmplY3QgPE5TU2hhcmlu
Z1NlcnZpY2VEZWxlZ2F0ZSwgTlNTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlPiB7CisgICAg
V2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjKiBfbWVudVByb3h5OworICAgIFJldGFpblB0
cjxOU1NoYXJpbmdTZXJ2aWNlUGlja2VyPiBfcGlja2VyOworfQorCisrIChXS1NoYXJpbmdTZXJ2
aWNlUGlja2VyRGVsZWdhdGUgKilzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlOwor
LSAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjKiltZW51UHJveHk7CistICh2b2lkKXNl
dE1lbnVQcm94eTooV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjKiltZW51UHJveHk7Cist
ICh2b2lkKXNldFBpY2tlcjooTlNTaGFyaW5nU2VydmljZVBpY2tlciAqKXBpY2tlcjsKK0BlbmQK
KworLy8gRklYTUU6IFdlIHByb2JhYmx5IG5lZWQgdG8gaGFuZyBvbiB0aGUgcGlja2VyIGl0c2Vs
ZiB1bnRpbCB0aGUgY29udGV4dCBtZW51IG9wZXJhdGlvbiBpcyBkb25lLCBhbmQgdGhpcyBvYmpl
Y3Qgd2lsbCBwcm9iYWJseSBkbyB0aGF0LgorQGltcGxlbWVudGF0aW9uIFdLU2hhcmluZ1NlcnZp
Y2VQaWNrZXJEZWxlZ2F0ZQorKyAoV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlKilzaGFy
ZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlCit7CisgICAgc3RhdGljIFdLU2hhcmluZ1Nl
cnZpY2VQaWNrZXJEZWxlZ2F0ZSogZGVsZWdhdGUgPSBbW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF07CisgICAgcmV0dXJuIGRlbGVnYXRlOworfQorCistIChXZWJL
aXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMqKW1lbnVQcm94eQoreworICAgIHJldHVybiBfbWVu
dVByb3h5OworfQorCistICh2b2lkKXNldE1lbnVQcm94eTooV2ViS2l0OjpXZWJDb250ZXh0TWVu
dVByb3h5TWFjKiltZW51UHJveHkKK3sKKyAgICBfbWVudVByb3h5ID0gbWVudVByb3h5OworfQor
CistICh2b2lkKXNldFBpY2tlcjooTlNTaGFyaW5nU2VydmljZVBpY2tlciAqKXBpY2tlcgorewor
ICAgIF9waWNrZXIgPSBwaWNrZXI7Cit9CisKKy0gKGlkIDxOU1NoYXJpbmdTZXJ2aWNlRGVsZWdh
dGU+KXNoYXJpbmdTZXJ2aWNlUGlja2VyOihOU1NoYXJpbmdTZXJ2aWNlUGlja2VyICopc2hhcmlu
Z1NlcnZpY2VQaWNrZXIgZGVsZWdhdGVGb3JTaGFyaW5nU2VydmljZTooTlNTaGFyaW5nU2Vydmlj
ZSAqKXNoYXJpbmdTZXJ2aWNlCit7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpc2hh
cmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFyaW5nU2VydmljZSB3aWxsU2hhcmVJ
dGVtczooTlNBcnJheSAqKWl0ZW1zCit7CisgICAgX21lbnVQcm94eS0+Y2xlYXJJbWFnZVNlcnZp
Y2VzTWVudSgpOworfQorCistICh2b2lkKXNoYXJpbmdTZXJ2aWNlOihOU1NoYXJpbmdTZXJ2aWNl
ICopc2hhcmluZ1NlcnZpY2UgZGlkU2hhcmVJdGVtczooTlNBcnJheSAqKWl0ZW1zCit7CisgICAg
Ly8gRklYTUU6IFdoYXQgZG8gd2UgZG8gaWYgdGhlcmUgYXJlIG11bHRpcGxlIGl0ZW1zPworICAg
IFJldGFpblB0cjxDR0ltYWdlU291cmNlUmVmPiBzb3VyY2UgPSBhZG9wdENGKENHSW1hZ2VTb3Vy
Y2VDcmVhdGVXaXRoRGF0YSgoQ0ZEYXRhUmVmKVtpdGVtcyBvYmplY3RBdEluZGV4OjBdLCBOVUxM
KSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0gYWRvcHRDRihDR0ltYWdlU291
cmNlQ3JlYXRlSW1hZ2VBdEluZGV4KHNvdXJjZS5nZXQoKSwgMCwgTlVMTCkpOworICAgIF9tZW51
UHJveHktPnJlcGxhY2VDb250cm9sbGVkSW1hZ2UoaW1hZ2UuZ2V0KCkpOworfQorCistIChOU1Jl
Y3Qpc2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFyaW5nU2VydmljZSBzb3Vy
Y2VGcmFtZU9uU2NyZWVuRm9yU2hhcmVJdGVtOihpZCA8TlNQYXN0ZWJvYXJkV3JpdGluZz4paXRl
bQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE5TWmVyb1JlY3Q7Cit9CisK
Ky0gKE5TSW1hZ2UgKilzaGFyaW5nU2VydmljZTooTlNTaGFyaW5nU2VydmljZSAqKXNoYXJpbmdT
ZXJ2aWNlIHRyYW5zaXRpb25JbWFnZUZvclNoYXJlSXRlbTooaWQgPE5TUGFzdGVib2FyZFdyaXRp
bmc+KWl0ZW0gY29udGVudFJlY3Q6KE5TUmVjdCAqKWNvbnRlbnRSZWN0Cit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbmlsOworfQorCistIChOU1dpbmRvdyAqKXNoYXJpbmdT
ZXJ2aWNlOihOU1NoYXJpbmdTZXJ2aWNlICopc2hhcmluZ1NlcnZpY2Ugc291cmNlV2luZG93Rm9y
U2hhcmVJdGVtczooTlNBcnJheSAqKWl0ZW1zIHNoYXJpbmdDb250ZW50U2NvcGU6KE5TU2hhcmlu
Z0NvbnRlbnRTY29wZSAqKXNoYXJpbmdDb250ZW50U2NvcGUKK3sKKyAgICByZXR1cm4gX21lbnVQ
cm94eS0+d2luZG93KCk7Cit9CisKK0BlbmQKKworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpXZWJDb250ZXh0TWVudVByb3h5TWFjKFdLVmll
dyogd2ViVmlldywgV2ViUGFnZVByb3h5KiBwYWdlKQpAQCAtMTIwLDYgKzIxNywxMCBAQCBXZWJD
b250ZXh0TWVudVByb3h5TWFjOjp+V2ViQ29udGV4dE1lbnVQcm94eU1hYygpCiAKIHZvaWQgV2Vi
Q29udGV4dE1lbnVQcm94eU1hYzo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29u
dGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKIHsKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisg
ICAgY2xlYXJJbWFnZVNlcnZpY2VzTWVudSgpOworI2VuZGlmCisKICAgICBtX3BhZ2UtPmNvbnRl
eHRNZW51SXRlbVNlbGVjdGVkKGl0ZW0pOwogfQogCkBAIC0xODUsOCArMjg2LDM2IEBAIHN0YXRp
YyBWZWN0b3I8UmV0YWluUHRyPE5TTWVudUl0ZW0+PiBuc01lbnVJdGVtVmVjdG9yKGNvbnN0IFZl
Y3RvcjxXZWJDb250ZXh0TWVuCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBXZWJDb250
ZXh0TWVudVByb3h5TWFjOjpwb3B1bGF0ZShjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVt
RGF0YT4mIGl0ZW1zKQorI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKK3ZvaWQgV2ViQ29udGV4
dE1lbnVQcm94eU1hYzo6c2V0dXBJbWFnZVNlcnZpY2VzTWVudShTaGFyZWFibGVCaXRtYXAmIGlt
YWdlKQogeworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjZ0ltYWdlID0gaW1hZ2UubWFrZUNH
SW1hZ2UoKTsKKyAgICBSZXRhaW5QdHI8TlNJbWFnZT4gbnNJbWFnZSA9IGFkb3B0TlMoW1tOU0lt
YWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZS5nZXQoKSBzaXplOmltYWdlLnNpemUo
KV0pOworCisgICAgUmV0YWluUHRyPE5TU2hhcmluZ1NlcnZpY2VQaWNrZXI+IHBpY2tlciA9IGFk
b3B0TlMoW1tOU1NoYXJpbmdTZXJ2aWNlUGlja2VyIGFsbG9jXSBpbml0V2l0aEl0ZW1zOkBbIG5z
SW1hZ2UuZ2V0KCkgXV0pOworICAgIFtwaWNrZXIgc2V0U3R5bGU6TlNTaGFyaW5nU2VydmljZVBp
Y2tlclN0eWxlUm9sbG92ZXJdOworICAgIFtwaWNrZXIgc2V0RGVsZWdhdGU6W1dLU2hhcmluZ1Nl
cnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlXV07
CisgICAgW1tXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgc2hhcmVkU2hhcmluZ1NlcnZp
Y2VQaWNrZXJEZWxlZ2F0ZV0gc2V0UGlja2VyOnBpY2tlci5nZXQoKV07CisKKyAgICBtX3NlcnZp
Y2VzTWVudSA9IFtwaWNrZXIgbWVudV07Cit9CisKK3ZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1h
Yzo6Y2xlYXJJbWFnZVNlcnZpY2VzTWVudSgpCit7CisgICAgW1tXS1NoYXJpbmdTZXJ2aWNlUGlj
a2VyRGVsZWdhdGUgc2hhcmVkU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZV0gc2V0UGlja2Vy
Om51bGxwdHJdOworICAgIG1fc2VydmljZXNNZW51ID0gbnVsbHB0cjsKK30KKyNlbmRpZgorCit2
b2lkIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OnBvcHVsYXRlKGNvbnN0IFZlY3RvcjxXZWJDb250
ZXh0TWVudUl0ZW1EYXRhPiYgaXRlbXMsIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmIGNv
bnRleHQpCit7CisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorICAgIGlmIChSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBpbWFnZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnRleHQuY29u
dHJvbGxlZEltYWdlSGFuZGxlKCkpKSB7CisgICAgICAgIHNldHVwSW1hZ2VTZXJ2aWNlc01lbnUo
KmltYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKG1fcG9w
dXApCiAgICAgICAgIFttX3BvcHVwIHJlbW92ZUFsbEl0ZW1zXTsKICAgICBlbHNlIHsKQEAgLTE5
OSwyMiArMzI4LDM4IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6cG9wdWxhdGUoY29u
c3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBpdGVtCiAgICAgcG9wdWxhdGVOU01l
bnUobWVudSwgbnNNZW51SXRlbVZlY3RvcihpdGVtcykpOwogfQogCi12b2lkIFdlYkNvbnRleHRN
ZW51UHJveHlNYWM6OnNob3dDb250ZXh0TWVudShjb25zdCBJbnRQb2ludCYgbWVudUxvY2F0aW9u
LCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKQordm9pZCBXZWJD
b250ZXh0TWVudVByb3h5TWFjOjpzaG93Q29udGV4dE1lbnUoY29uc3QgSW50UG9pbnQmIG1lbnVM
b2NhdGlvbiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBpdGVtcywgY29u
c3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYgY29udGV4dCkKIHsKKyNpZiBFTkFCTEUoSU1BR0Vf
Q09OVFJPTFMpCisgICAgaWYgKGl0ZW1zLmlzRW1wdHkoKSAmJiBjb250ZXh0LmNvbnRyb2xsZWRJ
bWFnZUhhbmRsZSgpLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisjZWxzZQogICAgIGlmIChp
dGVtcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBwb3B1bGF0ZShpdGVt
cyk7CisjZW5kaWYKKworICAgIHBvcHVsYXRlKGl0ZW1zLCBjb250ZXh0KTsKKwogICAgIFtbV0tN
ZW51VGFyZ2V0IHNoYXJlZE1lbnVUYXJnZXRdIHNldE1lbnVQcm94eTp0aGlzXTsKLSAgICAKKwog
ICAgIE5TUmVjdCBtZW51UmVjdCA9IE5TTWFrZVJlY3QobWVudUxvY2F0aW9uLngoKSwgbWVudUxv
Y2F0aW9uLnkoKSwgMCwgMCk7Ci0gICAgCisKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisg
ICAgaWYgKCFjb250ZXh0LmNvbnRyb2xsZWRJbWFnZUhhbmRsZSgpLmlzTnVsbCgpKQorICAgICAg
ICBbW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBp
Y2tlckRlbGVnYXRlXSBzZXRNZW51UHJveHk6dGhpc107CisKKyAgICBpZiAoIW1fc2VydmljZXNN
ZW51KQorICAgICAgICBbbV9wb3B1cCBhdHRhY2hQb3BVcFdpdGhGcmFtZTptZW51UmVjdCBpblZp
ZXc6bV93ZWJWaWV3XTsKKworICAgIE5TTWVudSogbWVudSA9IG1fc2VydmljZXNNZW51ID8gbV9z
ZXJ2aWNlc01lbnUuZ2V0KCkgOiBbbV9wb3B1cCBtZW51XTsKKyNlbHNlCiAgICAgW21fcG9wdXAg
YXR0YWNoUG9wVXBXaXRoRnJhbWU6bWVudVJlY3QgaW5WaWV3Om1fd2ViVmlld107CiAKICAgICBO
U01lbnUqIG1lbnUgPSBbbV9wb3B1cCBtZW51XTsKKyNlbmRpZgogCiAgICAgLy8gVGhlc2UgdmFs
dWVzIHdlcmUgYm9ycm93ZWQgZnJvbSBBcHBLaXQgdG8gbWF0Y2ggdGhlaXIgcGxhY2VtZW50IG9m
IHRoZSBtZW51LgotICAgIE5TUmVjdCB0aXRsZUZyYW1lID0gW21fcG9wdXAgIHRpdGxlUmVjdEZv
ckJvdW5kczptZW51UmVjdF07CisgICAgTlNSZWN0IHRpdGxlRnJhbWUgPSBbbV9wb3B1cCB0aXRs
ZVJlY3RGb3JCb3VuZHM6bWVudVJlY3RdOwogICAgIGlmICh0aXRsZUZyYW1lLnNpemUud2lkdGgg
PD0gMCB8fCB0aXRsZUZyYW1lLnNpemUuaGVpZ2h0IDw9IDApCiAgICAgICAgIHRpdGxlRnJhbWUg
PSBtZW51UmVjdDsKICAgICBmbG9hdCB2ZXJ0T2Zmc2V0ID0gcm91bmRmKChOU01heFkobWVudVJl
Y3QpIC0gTlNNYXhZKHRpdGxlRnJhbWUpKSArIE5TSGVpZ2h0KHRpdGxlRnJhbWUpKTsKQEAgLTIy
OCw3ICszNzMsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OnNob3dDb250ZXh0TWVu
dShjb25zdCBJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdAogCiAgICAgV0tQb3B1cENvbnRl
eHRNZW51KG1lbnUsIGxvY2F0aW9uKTsKIAotICAgIFttX3BvcHVwIGRpc21pc3NQb3BVcF07Cisg
ICAgaGlkZUNvbnRleHRNZW51KCk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6
aGlkZUNvbnRleHRNZW51KCkKQEAgLTIzNiw2ICszODEsMjIgQEAgdm9pZCBXZWJDb250ZXh0TWVu
dVByb3h5TWFjOjpoaWRlQ29udGV4dE1lbnUoKQogICAgIFttX3BvcHVwIGRpc21pc3NQb3BVcF07
CiB9CiAKK05TV2luZG93ICpXZWJDb250ZXh0TWVudVByb3h5TWFjOjp3aW5kb3coKSBjb25zdAor
eworICAgIHJldHVybiBbbV93ZWJWaWV3IHdpbmRvd107Cit9CisKKyNpZiBFTkFCTEUoSU1BR0Vf
Q09OVFJPTFMpCit2b2lkIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OnJlcGxhY2VDb250cm9sbGVk
SW1hZ2UoQ0dJbWFnZVJlZiBuZXdJbWFnZSkKK3sKKyAgICBGbG9hdFNpemUgbmV3SW1hZ2VTaXpl
KENHSW1hZ2VHZXRXaWR0aChuZXdJbWFnZSksIENHSW1hZ2VHZXRIZWlnaHQobmV3SW1hZ2UpKTsK
KyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBuZXdCaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZVNoYXJlYWJsZShleHBhbmRlZEludFNpemUobmV3SW1hZ2VTaXplKSwgU2hhcmVhYmxl
Qml0bWFwOjpTdXBwb3J0c0FscGhhKTsKKyAgICBuZXdCaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29u
dGV4dCgpLT5kcmF3TmF0aXZlSW1hZ2UobmV3SW1hZ2UsIG5ld0ltYWdlU2l6ZSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbmV3SW1hZ2VTaXplKSwgRmxvYXRS
ZWN0KEZsb2F0UG9pbnQoKSwgbmV3SW1hZ2VTaXplKSk7CisKKyAgICBtX3BhZ2UtPnJlcGxhY2VD
b250cm9sbGVkSW1hZ2UobmV3Qml0bWFwLnJlbGVhc2UoKSk7Cit9CisjZW5kaWYKKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcAppbmRleCBi
MDAzMGRjLi40OGQxZTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAKQEAgLTU0LDkgKzU0LDYgQEAgV2ViQ29udGV4dE1l
bnU6On5XZWJDb250ZXh0TWVudSgpCiB2b2lkIFdlYkNvbnRleHRNZW51OjpzaG93KCkKIHsKICAg
ICBDb250ZXh0TWVudUNvbnRyb2xsZXImIGNvbnRyb2xsZXIgPSBtX3BhZ2UtPmNvcmVQYWdlKCkt
PmNvbnRleHRNZW51Q29udHJvbGxlcigpOwotICAgIENvbnRleHRNZW51KiBtZW51ID0gY29udHJv
bGxlci5jb250ZXh0TWVudSgpOwotICAgIGlmICghbWVudSkKLSAgICAgICAgcmV0dXJuOwogICAg
IEZyYW1lKiBmcmFtZSA9IGNvbnRyb2xsZXIuaGl0VGVzdFJlc3VsdCgpLmlubmVyTm9kZUZyYW1l
KCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwpAQCAtODAsNiArNzcsMTMgQEAg
dm9pZCBXZWJDb250ZXh0TWVudTo6aXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRl
bURhdGEmIGl0ZW0pCiAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5jb250ZXh0TWVudUNvbnRyb2xs
ZXIoKS5jb250ZXh0TWVudUl0ZW1TZWxlY3RlZCgmY29yZUl0ZW0pOwogfQogCisjaWYgRU5BQkxF
KElNQUdFX0NPTlRST0xTKQordm9pZCBXZWJDb250ZXh0TWVudTo6cmVwbGFjZUNvbnRyb2xsZWRJ
bWFnZShQYXNzUmVmUHRyPEltYWdlPiBuZXdJbWFnZSkKK3sKKyAgICBtX3BhZ2UtPmNvcmVQYWdl
KCktPmNvbnRleHRNZW51Q29udHJvbGxlcigpLnJlcGxhY2VDb250cm9sbGVkSW1hZ2UobmV3SW1h
Z2UpOworfQorI2VuZGlmCisKIHZvaWQgV2ViQ29udGV4dE1lbnU6Om1lbnVJdGVtc1dpdGhVc2Vy
RGF0YShWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4gJm1lbnVJdGVtcywgUmVmUHRyPEFQ
STo6T2JqZWN0PiYgdXNlckRhdGEpIGNvbnN0CiB7CiAgICAgQ29udGV4dE1lbnVDb250cm9sbGVy
JiBjb250cm9sbGVyID0gbV9wYWdlLT5jb3JlUGFnZSgpLT5jb250ZXh0TWVudUNvbnRyb2xsZXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250
ZXh0TWVudS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRN
ZW51LmgKaW5kZXggNzVlZDdlNi4uZDliMTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmgKQEAgLTI4LDggKzI4LDEzIEBACiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJbWFnZTsKK30KKwogbmFtZXNwYWNlIFdlYktp
dCB7CiAKK2NsYXNzIFNoYXJlYWJsZUJpdG1hcDsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdl
YkNvbnRleHRNZW51IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViQ29udGV4dE1lbnU+IHsKQEAgLTQ1
LDYgKzUwLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGl0ZW1TZWxlY3RlZChjb25zdCBXZWJDb250
ZXh0TWVudUl0ZW1EYXRhJik7CiAgICAgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IGl0
ZW1zKCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAgdm9pZCByZXBs
YWNlQ29udHJvbGxlZEltYWdlKFBhc3NSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+KTsKKyNlbmRpZgor
CiBwcml2YXRlOgogICAgIFdlYkNvbnRleHRNZW51KFdlYlBhZ2UqKTsKICAgICB2b2lkIG1lbnVJ
dGVtc1dpdGhVc2VyRGF0YShWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mLCBSZWZQdHI8
QVBJOjpPYmplY3Q+JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKaW5kZXggZTcyZjAzNS4uNGM0M2YzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzA4MSw2ICszMDgxLDE0IEBA
IHZvaWQgV2ViUGFnZTo6ZGlkU2VsZWN0SXRlbUZyb21BY3RpdmVDb250ZXh0TWVudShjb25zdCBX
ZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTUFHRV9D
T05UUk9MUykKK3ZvaWQgV2ViUGFnZTo6cmVwbGFjZUNvbnRyb2xsZWRJbWFnZShjb25zdCBTaGFy
ZWFibGVCaXRtYXA6OkhhbmRsZSYgYml0bWFwSGFuZGxlKQoreworICAgIFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGJpdG1hcEhhbmRsZSk7
CisgICAgbV9jb250ZXh0TWVudS0+cmVwbGFjZUNvbnRyb2xsZWRJbWFnZShiaXRtYXAtPmNyZWF0
ZUltYWdlKCkpOworfQorI2VuZGlmCisKIHZvaWQgV2ViUGFnZTo6cmVwbGFjZVNlbGVjdGlvbldp
dGhUZXh0KEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGJvb2wgc2Vs
ZWN0UmVwbGFjZW1lbnQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKaW5kZXggNjkyOWI4Zi4uNzMzOGRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC03NDIsNiArNzQyLDEwIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgZ2V0Qnl0ZWNvZGVQcm9maWxlKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogCisj
aWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorICAgIHZvaWQgcmVwbGFjZUNvbnRyb2xsZWRJbWFn
ZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYpOworI2VuZGlmCisKIHByaXZhdGU6CiAg
ICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgppbmRleCA5YzM3MGU1Li5mYmFlOTU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAt
MzM5LDQgKzMzOSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAg
IAogICAgIFRha2VUaHVtYm5haWxTbmFwc2hvdCh1aW50NjRfdCBjYWxsYmFja0lEKQogCisjaWYg
RU5BQkxFKElNQUdFX0NPTlRST0xTKQorICAgIFJlcGxhY2VDb250cm9sbGVkSW1hZ2UoV2ViS2l0
OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBuZXdCaXRtYXBIYW5kbGUpCisjZW5kaWYKIH0K
</data>
<flag name="review"
          id="251359"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>