<?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>169530</bug_id>
          
          <creation_ts>2017-03-12 15:46:01 -0700</creation_ts>
          <short_desc>Transition GenericCallback from std::function to WTF::Function</short_desc>
          <delta_ts>2017-03-13 00:43: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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ossy</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1286960</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-12 15:46:01 -0700</bug_when>
    <thetext>Transition GenericCallback from std::function to WTF::Function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286970</commentid>
    <comment_count>1</comment_count>
      <attachid>304207</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-12 16:26:22 -0700</bug_when>
    <thetext>Created attachment 304207
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286971</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-12 16:28:00 -0700</bug_when>
    <thetext>Attachment 304207 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:97:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:179:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebProcessPool.cpp:1230:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2977:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2988:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2999:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:3010:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/GenericCallback.h:202:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebFrameProxy.h:104:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebFrameProxy.h:105:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebFrameProxy.h:106:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:803:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:804:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:807:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:809:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:68:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebProcessPool.h:277:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebFrameProxy.cpp:205:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebFrameProxy.cpp:215:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebFrameProxy.cpp:225:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 21 in 10 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>1286983</commentid>
    <comment_count>3</comment_count>
      <attachid>304207</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-03-12 17:42:16 -0700</bug_when>
    <thetext>Comment on attachment 304207
Patch

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

&gt; Source/WebKit2/UIProcess/GenericCallback.h:110
&gt; +        if (m_callback == std::nullopt)

m_callback is an optional - why not just !m_callback?

&gt; Source/WebKit2/UIProcess/GenericCallback.h:204
&gt; +        auto callback = GenericCallbackType&lt;sizeof...(T), T...&gt;::type::create(WTFMove(function), activityToken);

I have zero idea what this means, so r=me!!!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286985</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-12 17:53:18 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 304207 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=304207&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/GenericCallback.h:110
&gt; &gt; +        if (m_callback == std::nullopt)
&gt; 
&gt; m_callback is an optional - why not just !m_callback?

At some point in the lifecycle of our WTF::Optional we didn&apos;t support the bool() operator and required comparison to nullopt.

Flash forward to std::optional where I&apos;d already established the habit but it&apos;s now possible!  \o/

&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286986</commentid>
    <comment_count>5</comment_count>
      <attachid>304212</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-12 17:56:39 -0700</bug_when>
    <thetext>Created attachment 304212
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286987</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-12 17:58:02 -0700</bug_when>
    <thetext>Attachment 304212 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:97:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:179:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebProcessPool.cpp:1230:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2977:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2988:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2999:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:3010:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/GenericCallback.h:202:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebFrameProxy.h:104:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebFrameProxy.h:105:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebFrameProxy.h:106:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:803:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:804:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:807:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:809:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:68:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebProcessPool.h:277:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebFrameProxy.cpp:205:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebFrameProxy.cpp:215:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebFrameProxy.cpp:225:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 21 in 10 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>1286990</commentid>
    <comment_count>7</comment_count>
      <attachid>304212</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-12 18:37:39 -0700</bug_when>
    <thetext>Comment on attachment 304212
Patch for landing

Clearing flags on attachment: 304212

Committed r213777: &lt;http://trac.webkit.org/changeset/213777&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287049</commentid>
    <comment_count>8</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2017-03-12 23:38:05 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 304212 [details]
&gt; Patch for landing
&gt; 
&gt; Clearing flags on attachment: 304212
&gt; 
&gt; Committed r213777: &lt;http://trac.webkit.org/changeset/213777&gt;

It broke the GRK build, as the EWS noticed it, see https://build.webkit.org/builders/GTK%20Linux%2064-bit%20Release%20%28Build%29/builds/78168 for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287050</commentid>
    <comment_count>9</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2017-03-12 23:38:46 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; Comment on attachment 304212 [details]
&gt; &gt; Patch for landing
&gt; &gt; 
&gt; &gt; Clearing flags on attachment: 304212
&gt; &gt; 
&gt; &gt; Committed r213777: &lt;http://trac.webkit.org/changeset/213777&gt;
&gt; 
&gt; It broke the GRK build, as the EWS noticed it, see
&gt; https://build.webkit.org/builders/GTK%20Linux%2064-
&gt; bit%20Release%20%28Build%29/builds/78168 for details.

GRK -&gt; GTK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287083</commentid>
    <comment_count>10</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-03-13 00:43:26 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; Comment on attachment 304212 [details]
&gt; &gt; Patch for landing
&gt; &gt; 
&gt; &gt; Clearing flags on attachment: 304212
&gt; &gt; 
&gt; &gt; Committed r213777: &lt;http://trac.webkit.org/changeset/213777&gt;
&gt; 
&gt; It broke the GRK build, as the EWS noticed it, see
&gt; https://build.webkit.org/builders/GTK%20Linux%2064-
&gt; bit%20Release%20%28Build%29/builds/78168 for details.

Fixed in r213784.
https://trac.webkit.org/r213784</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304207</attachid>
            <date>2017-03-12 16:26:22 -0700</date>
            <delta_ts>2017-03-12 17:42:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>16198</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkYzA4MmExMmNkZi4uMDFiZjBlZDlmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAxNy0wMy0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgVHJhbnNpdGlvbiBHZW5lcmljQ2FsbGJhY2sgZnJvbSBzdGQ6OmZ1bmN0aW9u
IHRvIFdURjo6RnVuY3Rpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjk1MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaDoKKyAgICAgICAgKFdlYktp
dDo6R2VuZXJpY0NhbGxiYWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpHZW5lcmljQ2Fs
bGJhY2s6OnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6
OkdlbmVyaWNDYWxsYmFjazo6R2VuZXJpY0NhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6Q2Fs
bGJhY2tNYXA6OnB1dCk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0
bmFtZXNXaXRoQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNv
b2tpZU1hbmFnZXJQcm94eS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5OjpnZXRXZWJBcmNoaXZlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lUHJveHk6OmdldFJlc291cmNlRGF0YSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbkFz
V2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldE1haW5S
ZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRS
ZXNvdXJjZURhdGFGcm9tRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omdl
dFdlYkFyY2hpdmVPZkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6Z2V0U3RhdGlzdGljcyk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmg6CisKIDIwMTctMDMtMTEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSb2xsb3V0IHIyMTM3NDYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaAppbmRleCAxYjY3ZTkzODQ2Ny4uZTY2
YTJlZDhiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2Fs
bGJhY2suaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRl
ICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtOTIsMTEgKzkzLDExIEBAIHBy
aXZhdGU6CiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPgogY2xhc3MgR2VuZXJpY0NhbGxiYWNrIDog
cHVibGljIENhbGxiYWNrQmFzZSB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKFQuLi4sIEVycm9yKT4gQ2FsbGJhY2tGdW5jdGlvbjsKKyAgICB0eXBlZGVmIEZ1bmN0
aW9uPHZvaWQgKFQuLi4sIEVycm9yKT4gQ2FsbGJhY2tGdW5jdGlvbjsKIAotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEdlbmVyaWNDYWxsYmFjaz4gY3JlYXRlKENhbGxiYWNrRnVuY3Rpb24gY2FsbGJh
Y2ssIGNvbnN0IFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuJiBhY3Rp
dml0eVRva2VuID0gbnVsbHB0cikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZW5lcmljQ2FsbGJh
Y2s+IGNyZWF0ZShDYWxsYmFja0Z1bmN0aW9uJiYgY2FsbGJhY2ssIGNvbnN0IFByb2Nlc3NUaHJv
dHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRva2VuID0gbnVsbHB0cikK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2VuZXJpY0NhbGxiYWNrKGNhbGxi
YWNrLCBhY3Rpdml0eVRva2VuKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2VuZXJp
Y0NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spLCBhY3Rpdml0eVRva2VuKSk7CiAgICAgfQogCiAg
ICAgdmlydHVhbCB+R2VuZXJpY0NhbGxiYWNrKCkKQEAgLTEwNiwxMiArMTA3LDEyIEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgcGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKFQuLi4gcmV0dXJu
VmFsdWUpCiAgICAgewotICAgICAgICBpZiAoIW1fY2FsbGJhY2spCisgICAgICAgIGlmIChtX2Nh
bGxiYWNrID09IHN0ZDo6bnVsbG9wdCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBt
X2NhbGxiYWNrKHJldHVyblZhbHVlLi4uLCBFcnJvcjo6Tm9uZSk7CisgICAgICAgIG1fY2FsbGJh
Y2sudmFsdWUoKShyZXR1cm5WYWx1ZS4uLiwgRXJyb3I6Ok5vbmUpOwogCi0gICAgICAgIG1fY2Fs
bGJhY2sgPSBudWxscHRyOworICAgICAgICBtX2NhbGxiYWNrID0gc3RkOjpudWxsb3B0OwogICAg
IH0KIAogICAgIHZvaWQgcGVyZm9ybUNhbGxiYWNrKCkKQEAgLTEyMSwxOCArMTIyLDE4IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgaW52YWxpZGF0ZShFcnJvciBlcnJvciA9IEVycm9yOjpVbmtub3du
KSBmaW5hbAogICAgIHsKLSAgICAgICAgaWYgKCFtX2NhbGxiYWNrKQorICAgICAgICBpZiAobV9j
YWxsYmFjayA9PSBzdGQ6Om51bGxvcHQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
bV9jYWxsYmFjayh0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUoKS4uLiwg
ZXJyb3IpOworICAgICAgICBtX2NhbGxiYWNrLnZhbHVlKCkodHlwZW5hbWUgc3RkOjpyZW1vdmVf
cmVmZXJlbmNlPFQ+Ojp0eXBlKCkuLi4sIGVycm9yKTsKIAotICAgICAgICBtX2NhbGxiYWNrID0g
bnVsbHB0cjsKKyAgICAgICAgbV9jYWxsYmFjayA9IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgR2VuZXJpY0NhbGxiYWNrKENhbGxiYWNrRnVuY3Rpb24gY2FsbGJhY2ssIGNv
bnN0IFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRv
a2VuKQorICAgIEdlbmVyaWNDYWxsYmFjayhDYWxsYmFja0Z1bmN0aW9uJiYgY2FsbGJhY2ssIGNv
bnN0IFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRv
a2VuKQogICAgICAgICA6IENhbGxiYWNrQmFzZSh0eXBlKCksIGFjdGl2aXR5VG9rZW4pCi0gICAg
ICAgICwgbV9jYWxsYmFjayhjYWxsYmFjaykKKyAgICAgICAgLCBtX2NhbGxiYWNrKFdURk1vdmUo
Y2FsbGJhY2spKQogICAgIHsKICAgICB9CiAKQEAgLTE0Myw3ICsxNDQsNyBAQCBwcml2YXRlOgog
ICAgICAgICByZXR1cm4gJnRhZzsKICAgICB9CiAKLSAgICBDYWxsYmFja0Z1bmN0aW9uIG1fY2Fs
bGJhY2s7CisgICAgc3RkOjpvcHRpb25hbDxDYWxsYmFja0Z1bmN0aW9uPiBtX2NhbGxiYWNrOwog
fTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQVBJUmV0dXJuVmFsdWVUeXBlLCB0eXBlbmFtZSBJbnRl
cm5hbFJldHVyblZhbHVlVHlwZSA9IHR5cGVuYW1lIEFQSVR5cGVJbmZvPEFQSVJldHVyblZhbHVl
VHlwZT46OkltcGxUeXBlKj4KQEAgLTE5Nyw2ICsxOTgsMTMgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gcHV0KGNhbGxiYWNrKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBU
PgorICAgIHVpbnQ2NF90IHB1dChGdW5jdGlvbjx2b2lkIChULi4uKT4mJiBmdW5jdGlvbiwgY29u
c3QgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4mIGFjdGl2aXR5VG9r
ZW4pCisgICAgeworICAgICAgICBhdXRvIGNhbGxiYWNrID0gR2VuZXJpY0NhbGxiYWNrVHlwZTxz
aXplb2YuLi4oVCksIFQuLi4+Ojp0eXBlOjpjcmVhdGUoV1RGTW92ZShmdW5jdGlvbiksIGFjdGl2
aXR5VG9rZW4pOworICAgICAgICByZXR1cm4gcHV0KGNhbGxiYWNrKTsKKyAgICB9CisKICAgICB0
ZW1wbGF0ZTxjbGFzcyBUPgogICAgIFJlZlB0cjxUPiB0YWtlKHVpbnQ2NF90IGNhbGxiYWNrSUQp
CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1h
bmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdl
clByb3h5LmNwcAppbmRleCA1ZDgxZmFkMDAxNS4uMmVhYTVjZTNiZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCkBAIC05NCw3
ICs5NCw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZXJlZldlYkNvbnRleHRTdXBw
bGVtZW50KCkKICAgICBBUEk6Ok9iamVjdDo6ZGVyZWYoKTsKIH0KIAotdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJOjpBcnJheSosIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6Omdl
dEhvc3RuYW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEZ1bmN0
aW9uPHZvaWQgKEFQSTo6QXJyYXkqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1
bmN0aW9uKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBBcnJheUNhbGxiYWNrOjpjcmVhdGUoV1RG
TW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxi
YWNrLT5jYWxsYmFja0lEKCk7CkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBXZWJDb29raWVNYW5h
Z2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSBwb2wKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpKTsK
IH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koc3RkOjpmdW5jdGlvbjx2b2lkIChIVFRQQ29va2llQWNjZXB0UG9saWN5LCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5
OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEZ1bmN0aW9uPHZvaWQgKEhUVFBDb29raWVBY2Nl
cHRQb2xpY3ksIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAg
IGF1dG8gY2FsbGJhY2sgPSBIVFRQQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2s6OmNyZWF0ZShX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCmluZGV4IDRhZDY3NmM0YmRlLi5jZjc5OGQ3Y2Nj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJv
eHkuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluaXRpYWxpemVDbGll
bnQoY29uc3QgV0tDb29raWVNYW5hZ2VyQ2xpZW50QmFzZSopOwogICAgIAotICAgIHZvaWQgZ2V0
SG9zdG5hbWVzV2l0aENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKEFQSTo6QXJyYXkqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOworICAgIHZvaWQgZ2V0SG9z
dG5hbWVzV2l0aENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChBUEk6
OkFycmF5KiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZGVsZXRlQ29va2ll
c0Zvckhvc3RuYW1lKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7
CiAgICAgdm9pZCBkZWxldGVBbGxDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCk7CiAgICAgdm9p
ZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQpOwpAQCAtNzMsNyArNzMsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpV
UkwmIG1haW5Eb2N1bWVudFVSTCk7CiAKICAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7Ci0gICAgdm9pZCBnZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KHN0ZDo6ZnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+KTsKKyAgICB2b2lkIGdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koRnVu
Y3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
KTsKICAgICB2b2lkIHNldENvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkKGJvb2wpOwog
CiAgICAgdm9pZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklE
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAppbmRleCBiMTMx
MDJmZDkyYi4uZTQyNGFkZjZjNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJGcmFtZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJh
bWVQcm94eS5jcHAKQEAgLTIwMiwzNCArMjAyLDM0IEBAIFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVu
ZXJQcm94eSYgV2ViRnJhbWVQcm94eTo6c2V0VXBGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHko
CiAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkq
PihtX2FjdGl2ZUxpc3RlbmVyLmdldCgpKTsKIH0KIAotdm9pZCBXZWJGcmFtZVByb3h5OjpnZXRX
ZWJBcmNoaXZlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYkZyYW1lUHJveHk6OmdldFdlYkFyY2hp
dmUoRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2Fs
bGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIW1fcGFnZSkgewogICAgICAgICBjYWxsYmFja0Z1
bmN0aW9uKG51bGxwdHIsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9wYWdlLT5nZXRXZWJBcmNoaXZlT2ZGcmFtZSh0aGlzLCBj
YWxsYmFja0Z1bmN0aW9uKTsKKyAgICBtX3BhZ2UtPmdldFdlYkFyY2hpdmVPZkZyYW1lKHRoaXMs
IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCi12b2lkIFdlYkZyYW1lUHJveHk6Omdl
dE1haW5SZXNvdXJjZURhdGEoc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViRnJhbWVQcm94eTo6Z2V0
TWFpblJlc291cmNlRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghbV9wYWdlKSB7CiAgICAg
ICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93
bik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3BhZ2UtPmdldE1haW5SZXNvdXJj
ZURhdGFPZkZyYW1lKHRoaXMsIGNhbGxiYWNrRnVuY3Rpb24pOworICAgIG1fcGFnZS0+Z2V0TWFp
blJlc291cmNlRGF0YU9mRnJhbWUodGhpcywgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiB9
CiAKLXZvaWQgV2ViRnJhbWVQcm94eTo6Z2V0UmVzb3VyY2VEYXRhKEFQSTo6VVJMKiByZXNvdXJj
ZVVSTCwgc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViRnJhbWVQcm94eTo6Z2V0UmVzb3VyY2VEYXRh
KEFQSTo6VVJMKiByZXNvdXJjZVVSTCwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIW1fcGFnZSkg
ewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKG51bGxwdHIsIENhbGxiYWNrQmFzZTo6RXJyb3I6
OlVua25vd24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9wYWdlLT5nZXRSZXNv
dXJjZURhdGFGcm9tRnJhbWUodGhpcywgcmVzb3VyY2VVUkwsIGNhbGxiYWNrRnVuY3Rpb24pOwor
ICAgIG1fcGFnZS0+Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKHRoaXMsIHJlc291cmNlVVJMLCBX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAogdm9pZCBXZWJGcmFtZVByb3h5OjpzZXRV
bnJlYWNoYWJsZVVSTChjb25zdCBTdHJpbmcmIHVucmVhY2hhYmxlVVJMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKaW5kZXggMjRiZmM5OWVhZDMuLjZiZjk5Mzg2MmI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKQEAgLTEwMSw5ICsx
MDEsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Rpc3BsYXlpbmdNYXJrdXBEb2N1bWVudCgpIGNv
bnN0OwogICAgIGJvb2wgaXNEaXNwbGF5aW5nUERGRG9jdW1lbnQoKSBjb25zdDsKIAotICAgIHZv
aWQgZ2V0V2ViQXJjaGl2ZShzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNr
QmFzZTo6RXJyb3IpPik7Ci0gICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhKHN0ZDo6ZnVuY3Rp
b248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKLSAgICB2b2lkIGdl
dFJlc291cmNlRGF0YShBUEk6OlVSTCosIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKKyAgICB2b2lkIGdldFdlYkFyY2hpdmUoRnVuY3Rpb248
dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgZ2V0
TWFpblJlc291cmNlRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJik7CisgICAgdm9pZCBnZXRSZXNvdXJjZURhdGEoQVBJOjpVUkwqLCBGdW5jdGlv
bjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAKICAgICB2b2lk
IGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBTdHJpbmcmIHVy
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGMwOWM1
NTNkYjIyLi44M2M2ODI0NTQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKQEAgLTI5NzQsNyArMjk3NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxl
Y3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpCiAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25PckNvbnRl
bnRzQXNTdHJpbmcoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6
OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQ
STo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAg
ICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihudWxscHRyLCBD
YWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTI5ODUsNyArMjk4NSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKHN0ZDo6ZnVuY3Rpb248
dm9pZCAoQVBJOjpEYXRhKiwKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1l
UHJveHkqIGZyYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmdldE1haW5S
ZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2b2lkIChB
UEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewog
ICAgIGlmICghaXNWYWxpZCgpIHx8ICFmcmFtZSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9u
KG51bGxwdHIsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwpAQCAtMjk5Niw3ICsyOTk2
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZy
YW1lUHJveHkqIGZyYW1lLCBzdGQ6OmZ1bmN0aW8KICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCks
IGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZXNv
dXJjZURhdGFGcm9tRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSTo6VVJMKiByZXNvdXJj
ZVVSTCwgc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZXNvdXJjZURhdGFG
cm9tRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSTo6VVJMKiByZXNvdXJjZVVSTCwgRnVu
Y3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tG
dW5jdGlvbikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0
aW9uKG51bGxwdHIsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwpAQCAtMzAwNyw3ICsz
MDA3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJG
cmFtZVByb3h5KiBmcmFtZSwgQVBJOjpVUkwqIHJlc28KICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkdldFJlc291cmNlRGF0YUZyb21GcmFtZShmcmFtZS0+ZnJhbWVJRCgp
LCByZXNvdXJjZVVSTC0+c3RyaW5nKCksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFt
ZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4g
Y2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRXZWJBcmNoaXZlT2ZGcmFt
ZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIWlzVmFsaWQo
KSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKG51bGxwdHIsIENhbGxiYWNrQmFzZTo6RXJy
b3I6OlVua25vd24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IDM3ZGY2YmI0YWJkLi5hYTMxYzk1MzU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtODAwLDEzICs4MDAsMTMgQEAgcHVibGljOgogI2lmIEVOQUJMRShNSFRN
TCkKICAgICB2b2lkIGdldENvbnRlbnRzQXNNSFRNTERhdGEoc3RkOjpmdW5jdGlvbjx2b2lkIChB
UEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwogI2VuZGlmCi0gICAgdm9pZCBnZXRN
YWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJGcmFtZVByb3h5Kiwgc3RkOjpmdW5jdGlvbjx2b2lk
IChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgZ2V0UmVzb3Vy
Y2VEYXRhRnJvbUZyYW1lKFdlYkZyYW1lUHJveHkqLCBBUEk6OlVSTCosIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKKyAgICB2b2lkIGdldE1h
aW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBGdW5jdGlvbjx2b2lkIChBUEk6
OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBnZXRSZXNvdXJjZURh
dGFGcm9tRnJhbWUoV2ViRnJhbWVQcm94eSosIEFQSTo6VVJMKiwgRnVuY3Rpb248dm9pZCAoQVBJ
OjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0UmVuZGVyVHJl
ZUV4dGVybmFsUmVwcmVzZW50YXRpb24oc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcm
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwogICAgIHZvaWQgZ2V0U2VsZWN0aW9uT3JDb250ZW50
c0FzU3RyaW5nKHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+KTsKLSAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoc3RkOjpm
dW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOworICAgIHZv
aWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEq
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZShX
ZWJGcmFtZVByb3h5Kiwgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQ
cm94eSosIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+KTsKKyAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBGdW5j
dGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9p
ZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiwgc3RkOjpmdW5jdGlvbjx2
b2lkIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25z
dCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxi
YWNrRnVuY3Rpb24pOwogICAgIHZvaWQgZm9yY2VSZXBhaW50KFBhc3NSZWZQdHI8Vm9pZENhbGxi
YWNrPik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmlu
ZGV4IGI0NjQ1NGVlMjE2Li5mNjk2MjMxYmEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xMjI3LDcgKzEyMjcsNyBAQCBib29sIFdlYlByb2Nl
c3NQb29sOjpodHRwUGlwZWxpbmluZ0VuYWJsZWQoKSBjb25zdAogI2VuZGlmCiB9CiAKLXZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmdldFN0YXRpc3RpY3ModWludDMyX3Qgc3RhdGlzdGljc01hc2ssIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoQVBJOjpEaWN0aW9uYXJ5KiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRTdGF0aXN0aWNzKHVp
bnQzMl90IHN0YXRpc3RpY3NNYXNrLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRpY3Rpb25hcnkqLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghc3Rh
dGlzdGljc01hc2spIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihudWxscHRyLCBDYWxsYmFj
a0Jhc2U6OkVycm9yOjpVbmtub3duKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgKaW5kZXggZWJiMjYzZmFkNjcuLjg4NWFkM2NlYmIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMjc0LDcgKzI3NCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldEhUVFBQaXBlbGluaW5nRW5hYmxlZChib29sKTsKICAgICBib29sIGh0dHBQ
aXBlbGluaW5nRW5hYmxlZCgpIGNvbnN0OwogCi0gICAgdm9pZCBnZXRTdGF0aXN0aWNzKHVpbnQz
Ml90IHN0YXRpc3RpY3NNYXNrLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6RGljdGlvbmFyeSos
IENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CisgICAgdm9pZCBnZXRTdGF0aXN0aWNzKHVpbnQzMl90
IHN0YXRpc3RpY3NNYXNrLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRpY3Rpb25hcnkqLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJik7CiAgICAgCiAgICAgYm9vbCBqYXZhU2NyaXB0Q29uZmlndXJhdGlv
bkZpbGVFbmFibGVkKCkgeyByZXR1cm4gbV9qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkZpbGVFbmFi
bGVkOyB9CiAgICAgdm9pZCBzZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkZpbGVFbmFibGVkKGJv
b2wgZmxhZyk7Cg==
</data>
<flag name="review"
          id="325766"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304212</attachid>
            <date>2017-03-12 17:56:39 -0700</date>
            <delta_ts>2017-03-12 18:37:39 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>15978</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkYzA4MmExMmNkZi4uM2E0MzNhMjNkMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAxNy0wMy0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgVHJhbnNpdGlvbiBHZW5lcmljQ2FsbGJhY2sgZnJvbSBzdGQ6OmZ1bmN0aW9u
IHRvIFdURjo6RnVuY3Rpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjk1MzAKKworICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmg6CisgICAgICAgIChXZWJLaXQ6
OkdlbmVyaWNDYWxsYmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6R2VuZXJpY0NhbGxi
YWNrOjpwZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpH
ZW5lcmljQ2FsbGJhY2s6OkdlbmVyaWNDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OkNhbGxi
YWNrTWFwOjpwdXQpOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5h
bWVzV2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6
OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb29r
aWVNYW5hZ2VyUHJveHkuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6Z2V0V2ViQXJjaGl2ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lUHJveHk6OmdldE1haW5SZXNvdXJjZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5OjpnZXRSZXNvdXJjZURhdGEpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJGcmFtZVByb3h5Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25Bc1dl
YkFyY2hpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRNYWluUmVz
b3VyY2VEYXRhT2ZGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0UmVz
b3VyY2VEYXRhRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRX
ZWJBcmNoaXZlT2ZGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgor
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OmdldFN0YXRpc3RpY3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oOgorCiAyMDE3LTAzLTExICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUm9sbG91dCByMjEzNzQ2CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKaW5kZXggMWI2N2U5Mzg0NjcuLmQzNWQx
YTRjM2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxi
YWNrLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAi
V0tBUElDYXN0LmgiCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTkyLDExICs5MywxMSBAQCBwcml2
YXRlOgogdGVtcGxhdGU8dHlwZW5hbWUuLi4gVD4KIGNsYXNzIEdlbmVyaWNDYWxsYmFjayA6IHB1
YmxpYyBDYWxsYmFja0Jhc2UgewogcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2
b2lkIChULi4uLCBFcnJvcik+IENhbGxiYWNrRnVuY3Rpb247CisgICAgdHlwZWRlZiBGdW5jdGlv
bjx2b2lkIChULi4uLCBFcnJvcik+IENhbGxiYWNrRnVuY3Rpb247CiAKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxHZW5lcmljQ2FsbGJhY2s+IGNyZWF0ZShDYWxsYmFja0Z1bmN0aW9uIGNhbGxiYWNr
LCBjb25zdCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiYgYWN0aXZp
dHlUb2tlbiA9IG51bGxwdHIpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8R2VuZXJpY0NhbGxiYWNr
PiBjcmVhdGUoQ2FsbGJhY2tGdW5jdGlvbiYmIGNhbGxiYWNrLCBjb25zdCBQcm9jZXNzVGhyb3R0
bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiYgYWN0aXZpdHlUb2tlbiA9IG51bGxwdHIpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdlbmVyaWNDYWxsYmFjayhjYWxsYmFj
aywgYWN0aXZpdHlUb2tlbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdlbmVyaWND
YWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSwgYWN0aXZpdHlUb2tlbikpOwogICAgIH0KIAogICAg
IHZpcnR1YWwgfkdlbmVyaWNDYWxsYmFjaygpCkBAIC0xMDksOSArMTEwLDkgQEAgcHVibGljOgog
ICAgICAgICBpZiAoIW1fY2FsbGJhY2spCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
bV9jYWxsYmFjayhyZXR1cm5WYWx1ZS4uLiwgRXJyb3I6Ok5vbmUpOworICAgICAgICBtX2NhbGxi
YWNrLnZhbHVlKCkocmV0dXJuVmFsdWUuLi4sIEVycm9yOjpOb25lKTsKIAotICAgICAgICBtX2Nh
bGxiYWNrID0gbnVsbHB0cjsKKyAgICAgICAgbV9jYWxsYmFjayA9IHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiAKICAgICB2b2lkIHBlcmZvcm1DYWxsYmFjaygpCkBAIC0xMjQsMTUgKzEyNSwxNSBAQCBw
dWJsaWM6CiAgICAgICAgIGlmICghbV9jYWxsYmFjaykKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBtX2NhbGxiYWNrKHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlw
ZSgpLi4uLCBlcnJvcik7CisgICAgICAgIG1fY2FsbGJhY2sudmFsdWUoKSh0eXBlbmFtZSBzdGQ6
OnJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUoKS4uLiwgZXJyb3IpOwogCi0gICAgICAgIG1fY2Fs
bGJhY2sgPSBudWxscHRyOworICAgICAgICBtX2NhbGxiYWNrID0gc3RkOjpudWxsb3B0OwogICAg
IH0KIAogcHJpdmF0ZToKLSAgICBHZW5lcmljQ2FsbGJhY2soQ2FsbGJhY2tGdW5jdGlvbiBjYWxs
YmFjaywgY29uc3QgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4mIGFj
dGl2aXR5VG9rZW4pCisgICAgR2VuZXJpY0NhbGxiYWNrKENhbGxiYWNrRnVuY3Rpb24mJiBjYWxs
YmFjaywgY29uc3QgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4mIGFj
dGl2aXR5VG9rZW4pCiAgICAgICAgIDogQ2FsbGJhY2tCYXNlKHR5cGUoKSwgYWN0aXZpdHlUb2tl
bikKLSAgICAgICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNrKQorICAgICAgICAsIG1fY2FsbGJhY2so
V1RGTW92ZShjYWxsYmFjaykpCiAgICAgewogICAgIH0KIApAQCAtMTQzLDcgKzE0NCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIHJldHVybiAmdGFnOwogICAgIH0KIAotICAgIENhbGxiYWNrRnVuY3Rp
b24gbV9jYWxsYmFjazsKKyAgICBzdGQ6Om9wdGlvbmFsPENhbGxiYWNrRnVuY3Rpb24+IG1fY2Fs
bGJhY2s7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBUElSZXR1cm5WYWx1ZVR5cGUsIHR5cGVu
YW1lIEludGVybmFsUmV0dXJuVmFsdWVUeXBlID0gdHlwZW5hbWUgQVBJVHlwZUluZm88QVBJUmV0
dXJuVmFsdWVUeXBlPjo6SW1wbFR5cGUqPgpAQCAtMTk3LDYgKzE5OCwxMyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBwdXQoY2FsbGJhY2spOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVu
YW1lLi4uIFQ+CisgICAgdWludDY0X3QgcHV0KEZ1bmN0aW9uPHZvaWQgKFQuLi4pPiYmIGZ1bmN0
aW9uLCBjb25zdCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiYgYWN0
aXZpdHlUb2tlbikKKyAgICB7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBHZW5lcmljQ2FsbGJh
Y2tUeXBlPHNpemVvZi4uLihUKSwgVC4uLj46OnR5cGU6OmNyZWF0ZShXVEZNb3ZlKGZ1bmN0aW9u
KSwgYWN0aXZpdHlUb2tlbik7CisgICAgICAgIHJldHVybiBwdXQoY2FsbGJhY2spOworICAgIH0K
KwogICAgIHRlbXBsYXRlPGNsYXNzIFQ+CiAgICAgUmVmUHRyPFQ+IHRha2UodWludDY0X3QgY2Fs
bGJhY2tJRCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29va2llTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29r
aWVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDVkODFmYWQwMDE1Li4yZWFhNWNlM2JmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAK
QEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29u
dGV4dFN1cHBsZW1lbnQoKQogICAgIEFQSTo6T2JqZWN0OjpkZXJlZigpOwogfQogCi12b2lkIFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoV2ViQ29yZTo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkFycmF5KiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgRnVuY3Rpb248dm9pZCAoQVBJOjpBcnJheSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IEFycmF5Q2FsbGJhY2s6OmNy
ZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICB1aW50NjRfdCBjYWxsYmFja0lE
ID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIFdlYkNv
b2tpZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNj
ZXB0UG9saWN5IHBvbAogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNz
KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBv
bGljeSkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFj
Y2VwdFBvbGljeShzdGQ6OmZ1bmN0aW9uPHZvaWQgKEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJDb29raWVNYW5h
Z2VyUHJveHk6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koRnVuY3Rpb248dm9pZCAoSFRUUENv
b2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24p
CiB7CiAgICAgYXV0byBjYWxsYmFjayA9IEhUVFBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFjazo6
Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKaW5kZXggNGFkNjc2YzRiZGUuLmNm
Nzk4ZDdjY2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2ll
TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1h
bmFnZXJQcm94eS5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5pdGlh
bGl6ZUNsaWVudChjb25zdCBXS0Nvb2tpZU1hbmFnZXJDbGllbnRCYXNlKik7CiAgICAgCi0gICAg
dm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoQVBJOjpBcnJheSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CisgICAgdm9p
ZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIEZ1bmN0aW9uPHZv
aWQgKEFQSTo6QXJyYXkqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBkZWxl
dGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGhv
c3RuYW1lKTsKICAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEKTsK
ICAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25J
RCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCk7CkBAIC03Myw3ICs3Myw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMKTsKIAogICAgIHZvaWQgc2V0SFRUUENvb2tpZUFj
Y2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5KTsKLSAgICB2b2lkIGdldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3koc3RkOjpmdW5jdGlvbjx2b2lkIChIVFRQQ29va2llQWNjZXB0UG9saWN5
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOworICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBv
bGljeShGdW5jdGlvbjx2b2lkIChIVFRQQ29va2llQWNjZXB0UG9saWN5LCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4pOwogICAgIHZvaWQgc2V0Q29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQo
Ym9vbCk7CiAKICAgICB2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhXZWJDb3JlOjpT
ZXNzaW9uSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1l
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCmlu
ZGV4IGIxMzEwMmZkOTJiLi5lNDI0YWRmNmM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJGcmFtZVByb3h5LmNwcApAQCAtMjAyLDM0ICsyMDIsMzQgQEAgV2ViRm9ybVN1Ym1pc3Np
b25MaXN0ZW5lclByb3h5JiBXZWJGcmFtZVByb3h5OjpzZXRVcEZvcm1TdWJtaXNzaW9uTGlzdGVu
ZXJQcm94eSgKICAgICByZXR1cm4gKnN0YXRpY19jYXN0PFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVu
ZXJQcm94eSo+KG1fYWN0aXZlTGlzdGVuZXIuZ2V0KCkpOwogfQogCi12b2lkIFdlYkZyYW1lUHJv
eHk6OmdldFdlYkFyY2hpdmUoc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViRnJhbWVQcm94eTo6Z2V0
V2ViQXJjaGl2ZShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghbV9wYWdlKSB7CiAgICAgICAgIGNh
bGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3BhZ2UtPmdldFdlYkFyY2hpdmVPZkZyYW1l
KHRoaXMsIGNhbGxiYWNrRnVuY3Rpb24pOworICAgIG1fcGFnZS0+Z2V0V2ViQXJjaGl2ZU9mRnJh
bWUodGhpcywgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVQ
cm94eTo6Z2V0TWFpblJlc291cmNlRGF0YShzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSos
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJGcmFtZVBy
b3h5OjpnZXRNYWluUmVzb3VyY2VEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFtX3BhZ2Up
IHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihudWxscHRyLCBDYWxsYmFja0Jhc2U6OkVycm9y
OjpVbmtub3duKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcGFnZS0+Z2V0TWFp
blJlc291cmNlRGF0YU9mRnJhbWUodGhpcywgY2FsbGJhY2tGdW5jdGlvbik7CisgICAgbV9wYWdl
LT5nZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZSh0aGlzLCBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pKTsKIH0KIAotdm9pZCBXZWJGcmFtZVByb3h5OjpnZXRSZXNvdXJjZURhdGEoQVBJOjpVUkwq
IHJlc291cmNlVVJMLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJGcmFtZVByb3h5OjpnZXRSZXNv
dXJjZURhdGEoQVBJOjpVUkwqIHJlc291cmNlVVJMLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEq
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICgh
bV9wYWdlKSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgQ2FsbGJhY2tCYXNl
OjpFcnJvcjo6VW5rbm93bik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3BhZ2Ut
PmdldFJlc291cmNlRGF0YUZyb21GcmFtZSh0aGlzLCByZXNvdXJjZVVSTCwgY2FsbGJhY2tGdW5j
dGlvbik7CisgICAgbV9wYWdlLT5nZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUodGhpcywgcmVzb3Vy
Y2VVUkwsIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCiB2b2lkIFdlYkZyYW1lUHJv
eHk6OnNldFVucmVhY2hhYmxlVVJMKGNvbnN0IFN0cmluZyYgdW5yZWFjaGFibGVVUkwpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAppbmRleCAyNGJmYzk5ZWFkMy4uNmJm
OTkzODYyYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaApAQCAt
MTAxLDkgKzEwMSw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzRGlzcGxheWluZ01hcmt1cERvY3Vt
ZW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc0Rpc3BsYXlpbmdQREZEb2N1bWVudCgpIGNvbnN0Owog
Ci0gICAgdm9pZCBnZXRXZWJBcmNoaXZlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKLSAgICB2b2lkIGdldE1haW5SZXNvdXJjZURhdGEoc3Rk
OjpmdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAg
IHZvaWQgZ2V0UmVzb3VyY2VEYXRhKEFQSTo6VVJMKiwgc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6
OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOworICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZShG
dW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAg
dm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIGdldFJlc291cmNlRGF0YShBUEk6OlVSTCos
IEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKIAog
ICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgU3RyaW5nJiB1cmwpOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFN0
cmluZyYgdXJsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggYzA5YzU1M2RiMjIuLjgzYzY4MjQ1NDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcApAQCAtMjk3NCw3ICsyOTc0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFN0cmkKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlv
bk9yQ29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShzdGQ6OmZ1bmN0aW9uPHZv
aWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQor
dm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoRnVuY3Rpb248
dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlv
bikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKG51
bGxwdHIsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwpAQCAtMjk4NSw3ICsyOTg1LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoc3RkOjpm
dW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6R2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShjYWxsYmFja0lEKSwgbV9wYWdl
SUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUo
V2ViRnJhbWVQcm94eSogZnJhbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6
Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEZ1bmN0aW9u
PHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rp
b24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkgfHwgIWZyYW1lKSB7CiAgICAgICAgIGNhbGxiYWNr
RnVuY3Rpb24obnVsbHB0ciwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CkBAIC0yOTk2
LDcgKzI5OTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJh
bWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIHN0ZDo6ZnVuY3RpbwogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoZnJhbWUtPmZy
YW1lSUQoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJOjpVUkwq
IHJlc291cmNlVVJMLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmdldFJlc291
cmNlRGF0YUZyb21GcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJOjpVUkwqIHJlc291cmNl
VVJMLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxi
YWNrRnVuY3Rpb24obnVsbHB0ciwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CkBAIC0z
MDA3LDcgKzMwMDcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZy
YW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBBUEk6OlVSTCogcmVzbwogICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKGZyYW1lLT5m
cmFtZUlEKCksIHJlc291cmNlVVJMLT5zdHJpbmcoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJv
eHkqIGZyYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmdldFdlYkFyY2hp
dmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEq
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICgh
aXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgQ2FsbGJhY2tC
YXNlOjpFcnJvcjo6VW5rbm93bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKaW5kZXggMzdkZjZiYjRhYmQuLmFhMzFjOTUzNTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04MDAsMTMgKzgwMCwxMyBAQCBwdWJsaWM6CiAjaWYgRU5B
QkxFKE1IVE1MKQogICAgIHZvaWQgZ2V0Q29udGVudHNBc01IVE1MRGF0YShzdGQ6OmZ1bmN0aW9u
PHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CiAjZW5kaWYKLSAgICB2
b2lkIGdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7Ci0gICAgdm9pZCBn
ZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViRnJhbWVQcm94eSosIEFQSTo6VVJMKiwgc3RkOjpm
dW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOworICAgIHZv
aWQgZ2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoV2ViRnJhbWVQcm94eSosIEZ1bmN0aW9uPHZv
aWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIGdldFJl
c291cmNlRGF0YUZyb21GcmFtZShXZWJGcmFtZVByb3h5KiwgQVBJOjpVUkwqLCBGdW5jdGlvbjx2
b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRS
ZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25P
ckNvbnRlbnRzQXNTdHJpbmcoc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0
YShzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7
CisgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQ
STo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldFNvdXJjZUZv
ckZyYW1lKFdlYkZyYW1lUHJveHkqLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYs
IENhbGxiYWNrQmFzZTo6RXJyb3IpPik7Ci0gICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShX
ZWJGcmFtZVByb3h5Kiwgc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4pOworICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQcm94
eSosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsK
ICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRp
b24sIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4gY2FsbGJhY2tGdW5jdGlvbik7CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoUGFzc1JlZlB0cjxW
b2lkQ2FsbGJhY2s+KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKaW5kZXggYjQ2NDU0ZWUyMTYuLmY2OTYyMzFiYTA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTEyMjcsNyArMTIyNyw3IEBAIGJvb2wg
V2ViUHJvY2Vzc1Bvb2w6Omh0dHBQaXBlbGluaW5nRW5hYmxlZCgpIGNvbnN0CiAjZW5kaWYKIH0K
IAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0U3RhdGlzdGljcyh1aW50MzJfdCBzdGF0aXN0aWNz
TWFzaywgc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkRpY3Rpb25hcnkqLCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldFN0YXRp
c3RpY3ModWludDMyX3Qgc3RhdGlzdGljc01hc2ssIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGljdGlv
bmFyeSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAg
aWYgKCFzdGF0aXN0aWNzTWFzaykgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKG51bGxwdHIs
IENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAppbmRleCBlYmIyNjNmYWQ2Ny4uODg1YWQzY2ViYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0yNzQsNyArMjc0LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0SFRUUFBpcGVsaW5pbmdFbmFibGVkKGJvb2wpOwogICAgIGJv
b2wgaHR0cFBpcGVsaW5pbmdFbmFibGVkKCkgY29uc3Q7CiAKLSAgICB2b2lkIGdldFN0YXRpc3Rp
Y3ModWludDMyX3Qgc3RhdGlzdGljc01hc2ssIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJOjpEaWN0
aW9uYXJ5KiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKKyAgICB2b2lkIGdldFN0YXRpc3RpY3Mo
dWludDMyX3Qgc3RhdGlzdGljc01hc2ssIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGljdGlvbmFyeSos
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICAKICAgICBib29sIGphdmFTY3JpcHRDb25m
aWd1cmF0aW9uRmlsZUVuYWJsZWQoKSB7IHJldHVybiBtX2phdmFTY3JpcHRDb25maWd1cmF0aW9u
RmlsZUVuYWJsZWQ7IH0KICAgICB2b2lkIHNldEphdmFTY3JpcHRDb25maWd1cmF0aW9uRmlsZUVu
YWJsZWQoYm9vbCBmbGFnKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>