<?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>79253</bug_id>
          
          <creation_ts>2012-02-22 10:04:01 -0800</creation_ts>
          <short_desc>WebKit2: implement platform strategy to access Pasteboard in the UI process.</short_desc>
          <delta_ts>2012-03-06 19:56:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Enrica Casucci">enrica</reporter>
          <assigned_to name="Enrica Casucci">enrica</assigned_to>
          <cc>aestes</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>562080</commentid>
    <comment_count>0</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2012-02-22 10:04:01 -0800</bug_when>
    <thetext>This bugs tracks the work required to implement the message exchanging with the UIProcess to move the access to NSPasteboard out of the WebProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562090</commentid>
    <comment_count>1</comment_count>
      <attachid>128238</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2012-02-22 10:12:22 -0800</bug_when>
    <thetext>Created attachment 128238
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563262</commentid>
    <comment_count>2</comment_count>
      <attachid>128238</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-02-23 11:00:24 -0800</bug_when>
    <thetext>Comment on attachment 128238
Patch

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

Can sandbox profile be updated now, blocking pasteboard access?

&gt; Source/WebKit2/UIProcess/WebContext.cpp:625
&gt; +#if PLATFORM(MAC)
&gt; +void WebContext::getPasteboardTypes(const String&amp; pasteboardName, Vector&lt;String&gt;&amp; pasteboardTypes)

Can this code go to WebContextMac.mm instead?

&gt; Source/WebKit2/UIProcess/WebContext.cpp:642
&gt; +    RefPtr&lt;WebCore::SharedBuffer&gt; buffer = PlatformPasteboard(pasteboardName).bufferForType(pasteboardType);

Is this WebCore:: prefix needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564066</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2012-02-24 01:04:24 -0800</bug_when>
    <thetext>Attachment 128238 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebKit2/UIProcess/WebContext.h:232:  The parameter name &quot;handle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/UIProcess/WebContext.h:236:  The parameter name &quot;color&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/UIProcess/WebContext.h:240:  The parameter name &quot;handle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 3 in 7 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>565928</commentid>
    <comment_count>4</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2012-02-27 13:27:57 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 128238 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=128238&amp;action=review
&gt; 
&gt; Can sandbox profile be updated now, blocking pasteboard access?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebContext.cpp:625
&gt; &gt; +#if PLATFORM(MAC)
&gt; &gt; +void WebContext::getPasteboardTypes(const String&amp; pasteboardName, Vector&lt;String&gt;&amp; pasteboardTypes)
&gt; 
&gt; Can this code go to WebContextMac.mm instead?
&gt;
Yes, I&apos;ll move it. 
&gt; &gt; Source/WebKit2/UIProcess/WebContext.cpp:642
&gt; &gt; +    RefPtr&lt;WebCore::SharedBuffer&gt; buffer = PlatformPasteboard(pasteboardName).bufferForType(pasteboardType);
&gt; 
&gt; Is this WebCore:: prefix needed?
No, I&apos;ll remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565930</commentid>
    <comment_count>5</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2012-02-27 13:29:11 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 128238 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=128238&amp;action=review
&gt; 
&gt; Can sandbox profile be updated now, blocking pasteboard access?
&gt; 
Not yet, there is still one patch I&apos;m working on to remove the access performed in WebDragClient.cpp.
I need to move to the UI process all the code that deals with the NSPromisedFile stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565931</commentid>
    <comment_count>6</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2012-02-27 13:29:31 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Attachment 128238 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
&gt; Source/WebKit2/UIProcess/WebContext.h:232:  The parameter name &quot;handle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; Source/WebKit2/UIProcess/WebContext.h:236:  The parameter name &quot;color&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; Source/WebKit2/UIProcess/WebContext.h:240:  The parameter name &quot;handle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; Total errors found: 3 in 7 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

Will fix style issues before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565961</commentid>
    <comment_count>7</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2012-02-27 14:05:11 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/109022</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572463</commentid>
    <comment_count>8</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2012-03-06 19:56:10 -0800</bug_when>
    <thetext>It looks like this broke file uploads to icloud.com. I filed &lt;https://bugs.webkit.org/show_bug.cgi?id=80475&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128238</attachid>
            <date>2012-02-22 10:12:22 -0800</date>
            <delta_ts>2012-02-23 11:00:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>pasteboardinuiprocess.txt</filename>
            <type>text/plain</type>
            <size>17297</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODUxMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTAyLTIyICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0MjogaW1wbGVtZW50
IHBsYXRmb3JtIHN0cmF0ZWd5IHRvIGFjY2VzcyBQYXN0ZWJvYXJkIGluIHRoZSBVSSBwcm9jZXNz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkyNTMK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzk5NzE4NzY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBiZWhhdmlvciBjaGFu
Z2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKTogVGhl
cmUgaXMgbm8gbmVlZAorICAgICAgICB0byBjcmVhdGUgYSBTaGFyZWRCdWZmZXIgb2JqZWN0IGlm
IHRoZXJlIGlzIG5vIE5TRGF0YSBpbiB0aGUgcGFzdGVib2FyZAorICAgICAgICBmb3IgdGhlIGdp
dmVuIHBhc3RlYm9hcmQgdHlwZS4KKwogMjAxMi0wMi0yMiAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxk
bWFuQGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogY29uc29sZSBkb2Vzbid0
IHNob3cgcHJvcGVybHkgYXJyYXlzIGZyb20gd2hpY2ggdGFpbCB2YWx1ZXMgaGF2ZSBiZWVuIGRl
bGV0ZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9h
cmRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRm
b3JtUGFzdGVib2FyZE1hYy5tbQkocmV2aXNpb24gMTA4MjQ4KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
NDUsNyArNDUsMTAgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3Rvcgog
CiBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6d3JhcE5TRGF0YShbW1ttX3Bhc3RlYm9hcmQuZ2V0KCkgZGF0YUZvclR5cGU6cGFzdGVi
b2FyZFR5cGVdIGNvcHldIGF1dG9yZWxlYXNlXSk7CisgICAgTlNEYXRhICpkYXRhID0gW21fcGFz
dGVib2FyZC5nZXQoKSBkYXRhRm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CisgICAgaWYgKCFkYXRh
KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjp3cmFwTlNEYXRh
KFtbZGF0YSBjb3B5XSBhdXRvcmVsZWFzZV0pOwogfQogCiB2b2lkIFBsYXRmb3JtUGFzdGVib2Fy
ZDo6Z2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTA4NTEyKQor
KysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcg
QEAKKzIwMTItMDItMjIgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWJLaXQyOiBpbXBsZW1lbnQgcGxhdGZvcm0gc3RyYXRlZ3kgdG8gYWNjZXNzIFBhc3Rl
Ym9hcmQgaW4gdGhlIFVJIHByb2Nlc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03OTI1MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTk3MTg3Nj4K
KworICAgICAgICBUaGUgUGFzdGVib2FyZFN0cmF0ZWd5IGltcGxlbWVudGF0aW9uIGZvciBXZWJL
aXQyIG5vdyB1c2VzIG1lc3NhZ2VzCisgICAgICAgIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIFVJ
IHByb2Nlc3Mgd2hlcmUgdGhlIE5TUGFzdGVib2FyZCBhY2Nlc3MgaXMgbWFkZS4KKyAgICAgICAg
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkNvbnRleHQuY3BwOiBBZGRlZCBtZXRob2RzIGNvcnJlc3BvbmRpbmcgdG8gdGhlCisg
ICAgICAgIG5ldyBtZXNzYWdlcy4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6Z2V0UGFz
dGVib2FyZFR5cGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6Z2V0UGFzdGVib2Fy
ZFBhdGhuYW1lc0ZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpnZXRQYXN0
ZWJvYXJkU3RyaW5nRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmdldFBh
c3RlYm9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGFz
dGVib2FyZENvcHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpnZXRQYXN0ZWJvYXJk
Q2hhbmdlQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpnZXRQYXN0ZWJvYXJk
VW5pcXVlTmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmdldFBhc3RlYm9hcmRD
b2xvcik6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnNldFBhc3RlYm9hcmRUeXBlcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnNldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JU
eXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6c2V0UGFzdGVib2FyZFN0cmluZ0Zv
clR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpzZXRQYXN0ZWJvYXJkQnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5pbjogQWRkZWQgbWVzc2FnZXMgdG8gYWNjZXNz
IE5TUGFzdGVib2FyZAorICAgICAgICBpbiB0aGUgVUkgcHJvY2Vzcy4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAg
IE5ldyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUGFzdGVib2FyZFN0cmF0ZWd5IHVzaW5nIG1lc3Nh
Z2UgZXhjaGFuZ2UKKyAgICAgICAgd2l0aCB0aGUgVUkgcHJvY2Vzcy4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVzRm9yVHlwZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6c3RyaW5nRm9yVHlwZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29weSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y2hhbmdlQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnVuaXF1ZU5hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNvbG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpzZXRUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6
c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6c2V0UGF0aG5hbWVzRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6c2V0U3RyaW5nRm9yVHlwZSk6CisKIDIwMTItMDItMjIgIEFudGFyeWFtaSBQYW5k
aWEgIDxhbnRhcnlhbWkucGFuZGlhQG1vdG9yb2xhLmNvbT4KIAogICAgICAgICBbR1RLXVtXSzJd
IEFkZCBXZWJHTCBXZWJTZXR0aW5nLgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0LmNwcAkocmV2aXNpb24gMTA4MjQ4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTGlua0hhc2guaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0xvZ2dpbmcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtUGFz
dGVib2FyZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFk
aW5nLmg+CkBAIC02MjAsNiArNjIxLDgwIEBAIHZvaWQgV2ViQ29udGV4dDo6Z2V0UGx1Z2luUGF0
aChjb25zdCBTdHIKICAgICBwbHVnaW5QYXRoID0gcGx1Z2luLnBhdGg7CiB9CiAKKyNpZiBQTEFU
Rk9STShNQUMpCit2b2lkIFdlYkNvbnRleHQ6OmdldFBhc3RlYm9hcmRUeXBlcyhjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKQorewor
ICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuZ2V0VHlwZXMocGFzdGVib2Fy
ZFR5cGVzKTsKK30KKyAgICAKK3ZvaWQgV2ViQ29udGV4dDo6Z2V0UGFzdGVib2FyZFBhdGhuYW1l
c0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcykKK3sKKyAgICBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmdldFBhdGhuYW1lc0ZvclR5cGUocGF0aG5hbWVzLCBw
YXN0ZWJvYXJkVHlwZSk7Cit9CisKK3ZvaWQgV2ViQ29udGV4dDo6Z2V0UGFzdGVib2FyZFN0cmlu
Z0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgc3RyaW5nID0gUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKTsKK30K
Kwordm9pZCBXZWJDb250ZXh0OjpnZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBTaGFyZWRN
ZW1vcnk6OkhhbmRsZSYgaGFuZGxlLCB1aW50NjRfdCYgc2l6ZSkKK3sKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLmJ1ZmZlckZvclR5cGUocGFzdGVib2FyZFR5cGUpOworICAgIGlmICghYnVmZmVyKQor
ICAgICAgICByZXR1cm47CisgICAgc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOworICAgIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y3JlYXRlKHNp
emUpOworICAgIG1lbWNweShzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSwgYnVmZmVyLT5kYXRh
KCksIHNpemUpOworICAgIHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwg
U2hhcmVkTWVtb3J5OjpSZWFkT25seSk7Cit9CisKK3ZvaWQgV2ViQ29udGV4dDo6cGFzdGVib2Fy
ZENvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCwgY29uc3QgU3RyaW5nJiB0b1Bhc3Rl
Ym9hcmQpCit7CisgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHRvUGFzdGVib2FyZCkuY29weShmcm9t
UGFzdGVib2FyZCk7Cit9CisKK3ZvaWQgV2ViQ29udGV4dDo6Z2V0UGFzdGVib2FyZENoYW5nZUNv
dW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIHVpbnQ2NF90JiBjaGFuZ2VDb3VudCkK
K3sKKyAgICBjaGFuZ2VDb3VudCA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSku
Y2hhbmdlQ291bnQoKTsKK30KKwordm9pZCBXZWJDb250ZXh0OjpnZXRQYXN0ZWJvYXJkVW5pcXVl
TmFtZShTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoreworICAgIHBhc3RlYm9hcmROYW1lID0gUGxh
dGZvcm1QYXN0ZWJvYXJkOjp1bmlxdWVOYW1lKCk7Cit9CisKK3ZvaWQgV2ViQ29udGV4dDo6Z2V0
UGFzdGVib2FyZENvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OkNv
bG9yJiBjb2xvcikKK3sKKyAgICBjb2xvciA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJk
TmFtZSkuY29sb3IoKTsgICAgCit9CisKK3ZvaWQgV2ViQ29udGV4dDo6c2V0UGFzdGVib2FyZFR5
cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMpCit7CisgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1l
KS5zZXRUeXBlcyhwYXN0ZWJvYXJkVHlwZXMpOworfQorCit2b2lkIFdlYkNvbnRleHQ6OnNldFBh
c3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRobmFt
ZXMpCit7CisgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRQYXRobmFt
ZXNGb3JUeXBlKHBhdGhuYW1lcywgcGFzdGVib2FyZFR5cGUpOworfQorCit2b2lkIFdlYkNvbnRl
eHQ6OnNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQor
eworICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0U3RyaW5nRm9yVHlw
ZShzdHJpbmcsIHBhc3RlYm9hcmRUeXBlKTsgICAgCit9CisKK3ZvaWQgV2ViQ29udGV4dDo6c2V0
UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGhh
bmRsZSwgdWludDY0X3Qgc2l6ZSkKK3sKKyAgICBpZiAoaGFuZGxlLmlzTnVsbCgpKSB7CisgICAg
ICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZSgw
LCBwYXN0ZWJvYXJkVHlwZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUmVmUHRyPFNo
YXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjpjcmVhdGUoaGFu
ZGxlLCBTaGFyZWRNZW1vcnk6OlJlYWRPbmx5KTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+
KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc2l6ZSk7CisgICAgUGxhdGZvcm1QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJGb3JUeXBlKGJ1ZmZlciwgcGFzdGVib2FyZFR5
cGUpOworfQorI2VuZGlmCisKICNpZiAhRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogdm9pZCBXZWJD
b250ZXh0OjpkaWRHZXRTaXRlc1dpdGhQbHVnaW5EYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBz
aXRlcywgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuaAkocmV2aXNpb24gMTA4MjQ4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDcgKzIyNCwyMiBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkR2V0U2l0ZXNXaXRoUGx1Z2luRGF0YShjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgc2l0ZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZGlkQ2xlYXJQbHVn
aW5TaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKTsKICNlbmRpZgotICAgIAorCisjaWYgUExB
VEZPUk0oTUFDKQorICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMpOworICAgIHZvaWQg
Z2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1l
cyk7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcmKTsKKyAg
ICB2b2lkIGdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIFNoYXJlZE1lbW9yeTo6SGFuZGxl
JiBoYW5kbGUsIHVpbnQ2NF90JiBzaXplKTsKKyAgICB2b2lkIHBhc3RlYm9hcmRDb3B5KGNvbnN0
IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQsIGNvbnN0IFN0cmluZyYgdG9QYXN0ZWJvYXJkKTsKKyAg
ICB2b2lkIGdldFBhc3RlYm9hcmRDaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCB1aW50NjRfdCYgY2hhbmdlQ291bnQpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZFVuaXF1
ZU5hbWUoU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkQ29s
b3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKTsK
KyAgICB2b2lkIHNldFBhc3RlYm9hcmRUeXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKTsKKyAgICB2b2lkIHNldFBh
c3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRobmFt
ZXMpOworICAgIHZvaWQgc2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
Jik7CisgICAgdm9pZCBzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTaGFyZWRN
ZW1vcnk6OkhhbmRsZSYgaGFuZGxlLCB1aW50NjRfdCBzaXplKTsKKyNlbmRpZgorCiAgICAgdm9p
ZCBkaWRHZXRXZWJDb3JlU3RhdGlzdGljcyhjb25zdCBTdGF0aXN0aWNzRGF0YSYsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpOwogICAgICAgICAKICAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQg
V2ViQ29udGV4dE1lc3NhZ2VSZWNlaXZlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxMDgyNDgpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5pbgkod29ya2luZyBj
b3B5KQpAQCAtNDIsNCArNDIsMjAgQEAgbWVzc2FnZXMgLT4gV2ViQ29udGV4dCB7CiAKICAgICBE
aWRHZXRXZWJDb3JlU3RhdGlzdGljcyhXZWJLaXQ6OlN0YXRpc3RpY3NEYXRhIHN0YXRpc3RpY3NE
YXRhLCB1aW50NjRfdCBjYWxsYmFja0lEKQogCisjaWYgUExBVEZPUk0oTUFDKQorICAgICMgUGFz
dGVib2FyZCBtZXNzYWdlcy4KKyAgICAKKyAgICBHZXRQYXN0ZWJvYXJkVHlwZXMoV1RGOjpTdHJp
bmcgcGFzdGVib2FyZE5hbWUpIC0+IChWZWN0b3I8V1RGOjpTdHJpbmc+IHR5cGVzKQorICAgIEdl
dFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKFdURjo6U3RyaW5nIHBhc3RlYm9hcmROYW1lLCBX
VEY6OlN0cmluZyBwYXN0ZWJvYXJkVHlwZSkgLT4gKFZlY3RvcjxXVEY6OlN0cmluZz4gcGF0aG5h
bWVzKQorICAgIEdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKFdURjo6U3RyaW5nIHBhc3RlYm9h
cmROYW1lLCBXVEY6OlN0cmluZyBwYXN0ZWJvYXJkVHlwZSkgLT4gKFdURjo6U3RyaW5nIHN0cmlu
ZykKKyAgICBHZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShXVEY6OlN0cmluZyBwYXN0ZWJvYXJk
TmFtZSwgV1RGOjpTdHJpbmcgcGFzdGVib2FyZFR5cGUpIC0+IChXZWJLaXQ6OlNoYXJlZE1lbW9y
eTo6SGFuZGxlIGhhbmRsZSwgdWludDY0X3Qgc2l6ZSkKKyAgICBQYXN0ZWJvYXJkQ29weShXVEY6
OlN0cmluZyBmcm9tUGFzdGVib2FyZCwgV1RGOjpTdHJpbmcgdG9QYXN0ZWJvYXJkKQorICAgIEdl
dFBhc3RlYm9hcmRDaGFuZ2VDb3VudChXVEY6OlN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKHVp
bnQ2NF90IGNoYW5nZUNvdW50KQorICAgIEdldFBhc3RlYm9hcmRVbmlxdWVOYW1lKCkgLT4gKFdU
Rjo6U3RyaW5nIHBhc3RlYm9hcmROYW1lKQorICAgIEdldFBhc3RlYm9hcmRDb2xvcihXVEY6OlN0
cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFdlYkNvcmU6OkNvbG9yIGNvbG9yKQorICAgIFNldFBh
c3RlYm9hcmRUeXBlcyhXVEY6OlN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFdURjo6U3Ry
aW5nPiBwYXN0ZWJvYXJkVHlwZXMpCisgICAgU2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUo
V1RGOjpTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFdURjo6U3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBW
ZWN0b3I8V1RGOjpTdHJpbmc+IHBhdGhuYW1lcykKKyAgICBTZXRQYXN0ZWJvYXJkU3RyaW5nRm9y
VHlwZShXVEY6OlN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcgcGFzdGVib2FyZFR5
cGUsIFdURjo6U3RyaW5nIHN0cmluZykKKyAgICBTZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShX
VEY6OlN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFdl
YktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlLCB1aW50NjRfdCBzaXplKQorI2VuZGlm
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCShyZXZpc2lvbiAx
MDgyNDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNyw2MiArMTM3LDg5IEBA
IHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphZGRWaXNpdGVkTGkKIAogdm9pZCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLmdldFR5cGVzKHR5cGVzKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpHZXRQYXN0ZWJvYXJkVHlwZXMo
cGFzdGVib2FyZE5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTWVzc2FnZXM6OldlYkNvbnRleHQ6OkdldFBhc3RlYm9hcmRUeXBlczo6UmVwbHko
dHlwZXMpLCAwKTsKIH0KIAogUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIHJldHVybiBQbGF0Zm9y
bVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmJ1ZmZlckZvclR5cGUocGFzdGVib2FyZFR5cGUp
OworICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICB1aW50NjRfdCBzaXplID0g
MDsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3Nh
Z2VzOjpXZWJDb250ZXh0OjpHZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShwYXN0ZWJvYXJkTmFt
ZSwgcGFzdGVib2FyZFR5cGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTWVzc2FnZXM6OldlYkNvbnRleHQ6OkdldFBhc3RlYm9hcmRCdWZmZXJGb3JU
eXBlOjpSZXBseShoYW5kbGUsIHNpemUpLCAwKTsKKyAgICBpZiAoaGFuZGxlLmlzTnVsbCgpKQor
ICAgICAgICByZXR1cm4gMDsKKyAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlC
dWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNyZWF0ZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UmVhZE9u
bHkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc2l6ZSk7CiB9CiAKIHZvaWQg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+
JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpCiB7Ci0gICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1l
KS5nZXRQYXRobmFtZXNGb3JUeXBlKHBhdGhuYW1lcywgcGFzdGVib2FyZFR5cGUpOworICAgIFdl
YlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYkNv
bnRleHQ6OkdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCBwYXN0
ZWJvYXJkVHlwZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBNZXNzYWdlczo6V2ViQ29udGV4dDo6R2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGU6
OlJlcGx5KHBhdGhuYW1lcyksIDApOwogfQogCiBTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0
ZWJvYXJkTmFtZSkuc3RyaW5nRm9yVHlwZShwYXN0ZWJvYXJkVHlwZSk7CisgICAgU3RyaW5nIHZh
bHVlOworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYkNvbnRleHQ6OkdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmRO
YW1lLCBwYXN0ZWJvYXJkVHlwZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBNZXNzYWdlczo6V2ViQ29udGV4dDo6R2V0UGFzdGVib2FyZFN0cmluZ0Zv
clR5cGU6OlJlcGx5KHZhbHVlKSwgMCk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCiB2b2lkIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y29weShjb25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkLCBj
b25zdCBTdHJpbmcmIHRvUGFzdGVib2FyZCkKIHsKLSAgICBQbGF0Zm9ybVBhc3RlYm9hcmQodG9Q
YXN0ZWJvYXJkKS5jb3B5KGZyb21QYXN0ZWJvYXJkKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkNvbnRleHQ6OlBhc3RlYm9hcmRDb3B5
KGZyb21QYXN0ZWJvYXJkLCB0b1Bhc3RlYm9hcmQpLCAwKTsKIH0KIAogaW50IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y2hhbmdlQ291bnQoY29uc3QgV1RGOjpTdHJpbmcgJnBhc3RlYm9hcmROYW1l
KQogewotICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNoYW5n
ZUNvdW50KCk7CisgICAgdWludDY0X3QgY2hhbmdlQ291bnQ7CisgICAgV2ViUHJvY2Vzczo6c2hh
cmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViQ29udGV4dDo6R2V0UGFz
dGVib2FyZENoYW5nZUNvdW50KHBhc3RlYm9hcmROYW1lKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpHZXRQYXN0
ZWJvYXJkQ2hhbmdlQ291bnQ6OlJlcGx5KGNoYW5nZUNvdW50KSwgMCk7CisgICAgcmV0dXJuIGNo
YW5nZUNvdW50OwogfQogCiBTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1bmlxdWVOYW1l
KCkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp1bmlxdWVOYW1lKCk7CisgICAg
U3RyaW5nIHBhc3RlYm9hcmROYW1lOworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYkNvbnRleHQ6OkdldFBhc3RlYm9hcmRVbmlxdWVO
YW1lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
ZXNzYWdlczo6V2ViQ29udGV4dDo6R2V0UGFzdGVib2FyZFVuaXF1ZU5hbWU6OlJlcGx5KHBhc3Rl
Ym9hcmROYW1lKSwgMCk7CisgICAgcmV0dXJuIHBhc3RlYm9hcmROYW1lOwogfQogCiBDb2xvciBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
CiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY29sb3Io
KTsgICAgCisgICAgQ29sb3IgY29sb3I7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVj
dGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViQ29udGV4dDo6R2V0UGFzdGVib2FyZENvbG9y
KHBhc3RlYm9hcmROYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpHZXRQYXN0ZWJvYXJkQ29sb3I6OlJlcGx5
KGNvbG9yKSwgMCk7CisgICAgcmV0dXJuIGNvbG9yOwogfQogCiB2b2lkIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICBQbGF0Zm9ybVBhc3RlYm9hcmQo
cGFzdGVib2FyZE5hbWUpLnNldFR5cGVzKHBhc3RlYm9hcmRUeXBlcyk7CisgICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpTZXRQ
YXN0ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlcyksIDApOwogfQog
CiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0
ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIsIHBhc3RlYm9hcmRUeXBlKTsKKyAg
ICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CisgICAgaWYgKGJ1ZmZlcikgeworICAgICAg
ICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6
OmNyZWF0ZShidWZmZXItPnNpemUoKSk7CisgICAgICAgIG1lbWNweShzaGFyZWRNZW1vcnlCdWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgc2hh
cmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlJlYWRP
bmx5KTsKKyAgICB9CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpTZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShwYXN0ZWJv
YXJkTmFtZSwgcGFzdGVib2FyZFR5cGUsIGhhbmRsZSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkg
OiAwKSwgMCk7CiB9CiAKIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRQYXRobmFtZXNG
b3JUeXBlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAgUGxhdGZv
cm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRQYXRobmFtZXNGb3JUeXBlKHBhdGhuYW1l
cywgcGFzdGVib2FyZFR5cGUpOworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViQ29udGV4dDo6U2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5
cGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBwYXRobmFtZXMpLCAwKTsKIH0KIAog
dm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5n
JiBzdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpCiB7Ci0gICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5z
ZXRTdHJpbmdGb3JUeXBlKHN0cmluZywgcGFzdGVib2FyZFR5cGUpOyAgICAKKyAgICBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkNvbnRleHQ6OlNl
dFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwg
c3RyaW5nKSwgMCk7CiB9CiAjZW5kaWYKIAo=
</data>
<flag name="review"
          id="130553"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>