<?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>131805</bug_id>
          
          <creation_ts>2014-04-17 13:25:29 -0700</creation_ts>
          <short_desc>[New Multicolumn] Nested columns not working at all.</short_desc>
          <delta_ts>2014-04-24 09:33:00 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>131825</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>jonlee</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>WebkitBugTracker</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1001662</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2014-04-17 13:25:29 -0700</bug_when>
    <thetext>The old multi-column code could at least handle nested columns as an unsplittable unit. The new code should do the same. Right now it is dropping them completely, which will undoubtedly cause regressions in children&apos;s books in iBooks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001872</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-04-17 23:12:56 -0700</bug_when>
    <thetext>&lt;rdar://problem/16656288&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002658</commentid>
    <comment_count>2</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2014-04-21 13:43:40 -0700</bug_when>
    <thetext>This is a blocker for turning the new columns on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003044</commentid>
    <comment_count>3</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2014-04-22 13:22:42 -0700</bug_when>
    <thetext>This is the challenging one. I wish I knew if iBooks depends on this or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003103</commentid>
    <comment_count>4</comment_count>
      <attachid>229923</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2014-04-22 16:39:09 -0700</bug_when>
    <thetext>Created attachment 229923
Patch

Work in progress. Everything working now except for transparency. I need to patch bounding box for that to know how to recur.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003138</commentid>
    <comment_count>5</comment_count>
      <attachid>229935</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2014-04-22 18:04:22 -0700</bug_when>
    <thetext>Created attachment 229935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003139</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-22 18:06:19 -0700</bug_when>
    <thetext>Attachment 229935 did not pass style-queue:


ERROR: Source/WebCore/rendering/RenderLayer.h:714:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/rendering/RenderLayer.cpp:4312:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 2 in 6 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>1003159</commentid>
    <comment_count>7</comment_count>
      <attachid>229945</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2014-04-22 19:28:28 -0700</bug_when>
    <thetext>Created attachment 229945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003328</commentid>
    <comment_count>8</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2014-04-23 11:06:10 -0700</bug_when>
    <thetext>Fixed in r167714.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229923</attachid>
            <date>2014-04-22 16:39:09 -0700</date>
            <delta_ts>2014-04-22 18:04:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>13434</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24g
MTY3Njc2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDgyOCw2ICs0ODI4LDkgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6
b2Zmc2V0RnJvbUxvZ2ljYQogCiBSZW5kZXJSZWdpb24qIFJlbmRlckJsb2NrOjpyZWdpb25BdEJs
b2NrT2Zmc2V0KExheW91dFVuaXQgYmxvY2tPZmZzZXQpIGNvbnN0CiB7CisgICAgaWYgKGlzSW5G
bG93UmVuZGVyRmxvd1RocmVhZCgpKQorICAgICAgICByZXR1cm4gMDsKKwogICAgIFJlbmRlckZs
b3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7CiAgICAg
aWYgKCFmbG93VGhyZWFkIHx8ICFmbG93VGhyZWFkLT5oYXNWYWxpZFJlZ2lvbkluZm8oKSkKICAg
ICAgICAgcmV0dXJuIDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAJKHJldmlzaW9uIDE2NzY3NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyNDAsMTEgKzQyNDAsMzUgQEAgdm9pZCBS
ZW5kZXJMYXllcjo6cGFpbnRMaXN0KFZlY3RvcjxSZW5kZQogICAgIH0KIH0KIAorUmVuZGVyTGF5
ZXIqIFJlbmRlckxheWVyOjplbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXJJblN1YnRyZWUoY29uc3Qg
UmVuZGVyTGF5ZXIqIHJvb3RMYXllcikgY29uc3QKK3sKKyAgICAvLyBJZiB3ZSBkb24ndCBoYXZl
IGFuIGVuY2xvc2luZyBsYXllciwgb3IgaWYgdGhlIHJvb3QgbGF5ZXIgaXMgdGhlIHNhbWUgYXMg
dGhlIGVuY2xvc2luZyBsYXllciwKKyAgICAvLyB0aGVuIGp1c3QgcmV0dXJuIHRoZSBlbmNsb3Np
bmcgcGFnaW5hdGlvbiBsYXllciAoaXQgd2lsbCBiZSAwIGluIHRoZSBmb3JtZXIgY2FzZSBhbmQg
dGhlIHJvb3RMYXllciBpbiB0aGUgbGF0dGVyIGNhc2UpLgorICAgIGlmICghbV9lbmNsb3NpbmdQ
YWdpbmF0aW9uTGF5ZXIgfHwgcm9vdExheWVyID09IG1fZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVy
KQorICAgICAgICByZXR1cm4gbV9lbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXI7CisgICAgCisgICAg
Ly8gV2FsayB1cCB0aGUgbGF5ZXIgdHJlZSBhbmQgc2VlIHdoaWNoIGxheWVyIHdlIGhpdCBmaXJz
dC4gSWYgaXQncyB0aGUgcm9vdCwgdGhlbiB0aGUgZW5jbG9zaW5nIHBhZ2luYXRpb24KKyAgICAv
LyBsYXllciBpc24ndCBpbiBvdXIgc3VidHJlZSBhbmQgd2UgcmV0dXJuIDAuIElmIHdlIGhpdCB0
aGUgZW5jbG9zaW5nIHBhZ2luYXRpb24gbGF5ZXIgZmlyc3QsIHRoZW4KKyAgICAvLyB3ZSBjYW4g
cmV0dXJuIGl0LgorICAgIGZvciAoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyID0gdGhpczsgbGF5
ZXI7IGxheWVyID0gbGF5ZXItPnBhcmVudCgpKSB7CisgICAgICAgIGlmIChsYXllciA9PSByb290
TGF5ZXIpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKGxheWVyID09IG1fZW5j
bG9zaW5nUGFnaW5hdGlvbkxheWVyKQorICAgICAgICAgICAgcmV0dXJuIG1fZW5jbG9zaW5nUGFn
aW5hdGlvbkxheWVyOworICAgIH0KKyAgICAKKyAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBiZSBy
ZWFjaGVkLCBzaW5jZSBhbiBlbmNsb3NpbmcgbGF5ZXIgc2hvdWxkIGFsd2F5cyBlaXRoZXIgYmUg
dGhlIHJvb3RMYXllciBvciBiZQorICAgIC8vIG91ciBlbmNsb3NpbmcgcGFnaW5hdGlvbiBsYXll
ci4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKwogdm9pZCBS
ZW5kZXJMYXllcjo6Y29sbGVjdEZyYWdtZW50cyhMYXllckZyYWdtZW50cyYgZnJhZ21lbnRzLCBj
b25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwgY29uc3Qg
TGF5b3V0UmVjdCYgZGlydHlSZWN0LAogICAgIENsaXBSZWN0c1R5cGUgY2xpcFJlY3RzVHlwZSwg
T3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgaW5PdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2
YW5jeSwgU2hvdWxkUmVzcGVjdE92ZXJmbG93Q2xpcCByZXNwZWN0T3ZlcmZsb3dDbGlwLCBjb25z
dCBMYXlvdXRQb2ludCogb2Zmc2V0RnJvbVJvb3QsCi0gICAgY29uc3QgTGF5b3V0UmVjdCogbGF5
ZXJCb3VuZGluZ0JveCkKKyAgICBjb25zdCBMYXlvdXRSZWN0KiBsYXllckJvdW5kaW5nQm94LCBT
aG91bGRBcHBseVJvb3RPZmZzZXRUb0ZyYWdtZW50cyBhcHBseVJvb3RPZmZzZXRUb0ZyYWdtZW50
cykKIHsKLSAgICBpZiAoIWVuY2xvc2luZ1BhZ2luYXRpb25MYXllcigpIHx8IGhhc1RyYW5zZm9y
bSgpKSB7CisgICAgUmVuZGVyTGF5ZXIqIHBhZ2luYXRpb25MYXllciA9IGVuY2xvc2luZ1BhZ2lu
YXRpb25MYXllckluU3VidHJlZShyb290TGF5ZXIpOworICAgIGlmICghcGFnaW5hdGlvbkxheWVy
IHx8IGhhc1RyYW5zZm9ybSgpKSB7CiAgICAgICAgIC8vIEZvciB1bnBhZ2luYXRlZCBsYXllcnMs
IHRoZXJlIGlzIG9ubHkgb25lIGZyYWdtZW50LgogICAgICAgICBMYXllckZyYWdtZW50IGZyYWdt
ZW50OwogICAgICAgICBDbGlwUmVjdHNDb250ZXh0IGNsaXBSZWN0c0NvbnRleHQocm9vdExheWVy
LCByZWdpb24sIGNsaXBSZWN0c1R5cGUsIGluT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3ks
IHJlc3BlY3RPdmVyZmxvd0NsaXApOwpAQCAtNDI1NSwxMSArNDI3OSwxMSBAQCB2b2lkIFJlbmRl
ckxheWVyOjpjb2xsZWN0RnJhZ21lbnRzKExheWVyCiAgICAgCiAgICAgLy8gQ29tcHV0ZSBvdXIg
b2Zmc2V0IHdpdGhpbiB0aGUgZW5jbG9zaW5nIHBhZ2luYXRpb24gbGF5ZXIuCiAgICAgTGF5b3V0
UG9pbnQgb2Zmc2V0V2l0aGluUGFnaW5hdGVkTGF5ZXI7Ci0gICAgY29udmVydFRvTGF5ZXJDb29y
ZHMoZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVyKCksIG9mZnNldFdpdGhpblBhZ2luYXRlZExheWVy
KTsKKyAgICBjb252ZXJ0VG9MYXllckNvb3JkcyhwYWdpbmF0aW9uTGF5ZXIsIG9mZnNldFdpdGhp
blBhZ2luYXRlZExheWVyKTsKICAgICAKICAgICAvLyBDYWxjdWxhdGUgY2xpcCByZWN0cyByZWxh
dGl2ZSB0byB0aGUgZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVyLiBUaGUgcHVycG9zZSBvZiB0aGlz
IGNhbGwgaXMgdG8gZGV0ZXJtaW5lIG91ciBib3VuZHMgY2xpcHBlZCB0byBpbnRlcm1lZGlhdGUK
ICAgICAvLyBsYXllcnMgYmV0d2VlbiB1cyBhbmQgdGhlIHBhZ2luYXRpb24gY29udGV4dC4gSXQn
cyBpbXBvcnRhbnQgdG8gbWluaW1pemUgdGhlIG51bWJlciBvZiBmcmFnbWVudHMgd2UgbmVlZCB0
byBjcmVhdGUgYW5kIHRoaXMgaGVscHMgd2l0aCB0aGF0LgotICAgIENsaXBSZWN0c0NvbnRleHQg
cGFnaW5hdGlvbkNsaXBSZWN0c0NvbnRleHQoZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVyKCksIHJl
Z2lvbiwgY2xpcFJlY3RzVHlwZSwgaW5PdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSwgcmVz
cGVjdE92ZXJmbG93Q2xpcCk7CisgICAgQ2xpcFJlY3RzQ29udGV4dCBwYWdpbmF0aW9uQ2xpcFJl
Y3RzQ29udGV4dChwYWdpbmF0aW9uTGF5ZXIsIHJlZ2lvbiwgY2xpcFJlY3RzVHlwZSwgaW5PdmVy
bGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSwgcmVzcGVjdE92ZXJmbG93Q2xpcCk7CiAgICAgTGF5
b3V0UmVjdCBsYXllckJvdW5kc0luRmxvd1RocmVhZDsKICAgICBDbGlwUmVjdCBiYWNrZ3JvdW5k
UmVjdEluRmxvd1RocmVhZDsKICAgICBDbGlwUmVjdCBmb3JlZ3JvdW5kUmVjdEluRmxvd1RocmVh
ZDsKQEAgLTQyNjgsOSArNDI5Miw2NyBAQCB2b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0RnJhZ21l
bnRzKExheWVyCiAgICAgICAgIG91dGxpbmVSZWN0SW5GbG93VGhyZWFkLCAmb2Zmc2V0V2l0aGlu
UGFnaW5hdGVkTGF5ZXIpOwogICAgIAogICAgIC8vIFRha2Ugb3VyIGJvdW5kaW5nIGJveCB3aXRo
aW4gdGhlIGZsb3cgdGhyZWFkIGFuZCBjbGlwIGl0LgotICAgIExheW91dFJlY3QgbGF5ZXJCb3Vu
ZGluZ0JveEluRmxvd1RocmVhZCA9IGxheWVyQm91bmRpbmdCb3ggPyAqbGF5ZXJCb3VuZGluZ0Jv
eCA6IGJvdW5kaW5nQm94KGVuY2xvc2luZ1BhZ2luYXRpb25MYXllcigpLCAwLCAmb2Zmc2V0V2l0
aGluUGFnaW5hdGVkTGF5ZXIpOworICAgIExheW91dFJlY3QgbGF5ZXJCb3VuZGluZ0JveEluRmxv
d1RocmVhZCA9IGxheWVyQm91bmRpbmdCb3ggPyAqbGF5ZXJCb3VuZGluZ0JveCA6IGJvdW5kaW5n
Qm94KHBhZ2luYXRpb25MYXllciwgMCwgJm9mZnNldFdpdGhpblBhZ2luYXRlZExheWVyKTsKICAg
ICBsYXllckJvdW5kaW5nQm94SW5GbG93VGhyZWFkLmludGVyc2VjdChiYWNrZ3JvdW5kUmVjdElu
Rmxvd1RocmVhZC5yZWN0KCkpOworICAgIAorICAgIC8vIENvbXB1dGUgYSBib3VuZGluZyBib3gu
CisgICAgUmVuZGVyRmxvd1RocmVhZCYgZW5jbG9zaW5nRmxvd1RocmVhZCA9IHRvUmVuZGVyRmxv
d1RocmVhZChwYWdpbmF0aW9uTGF5ZXItPnJlbmRlcmVyKCkpOworICAgIFJlbmRlckxheWVyKiBw
YXJlbnRQYWdpbmF0aW9uTGF5ZXIgPSBwYWdpbmF0aW9uTGF5ZXItPnBhcmVudCgpLT5lbmNsb3Np
bmdQYWdpbmF0aW9uTGF5ZXJJblN1YnRyZWUocm9vdExheWVyKTsKKyAgICBMYXllckZyYWdtZW50
cyBhbmNlc3RvckZyYWdtZW50czsKKyAgICBpZiAocGFyZW50UGFnaW5hdGlvbkxheWVyKSB7Cisg
ICAgICAgIExheW91dFJlY3QgbGF5ZXJGcmFnbWVudEJvdW5kaW5nQm94SW5QYXJlbnRQYWdpbmF0
aW9uTGF5ZXIgPSBlbmNsb3NpbmdGbG93VGhyZWFkLmZyYWdtZW50c0JvdW5kaW5nQm94KGxheWVy
Qm91bmRpbmdCb3hJbkZsb3dUaHJlYWQpOworICAgICAgICAKKyAgICAgICAgTGF5b3V0UG9pbnQg
b2Zmc2V0V2l0aGluUGFyZW50UGFnaW5hdGVkTGF5ZXI7CisgICAgICAgIHBhZ2luYXRpb25MYXll
ci0+Y29udmVydFRvTGF5ZXJDb29yZHMocGFyZW50UGFnaW5hdGlvbkxheWVyLCBvZmZzZXRXaXRo
aW5QYXJlbnRQYWdpbmF0ZWRMYXllcik7CisgICAgICAgIGxheWVyRnJhZ21lbnRCb3VuZGluZ0Jv
eEluUGFyZW50UGFnaW5hdGlvbkxheWVyLm1vdmVCeShvZmZzZXRXaXRoaW5QYXJlbnRQYWdpbmF0
ZWRMYXllcik7CisgICAgICAgIAorICAgICAgICBwYXJlbnRQYWdpbmF0aW9uTGF5ZXItPmNvbGxl
Y3RGcmFnbWVudHMoYW5jZXN0b3JGcmFnbWVudHMsIHJvb3RMYXllciwgcmVnaW9uLCBkaXJ0eVJl
Y3QsIGNsaXBSZWN0c1R5cGUsIGluT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3ksIHJlc3Bl
Y3RPdmVyZmxvd0NsaXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyLCAmbGF5ZXJGcmFnbWVudEJvdW5kaW5nQm94SW5QYXJlbnRQYWdpbmF0
aW9uTGF5ZXIsIEFwcGx5Um9vdE9mZnNldFRvRnJhZ21lbnRzKTsKKyAgICAgICAgCisgICAgICAg
IGlmIChhbmNlc3RvckZyYWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIAorICAgICAgICBmb3IgKGF1dG8mIGFuY2VzdG9yRnJhZ21lbnQgOiBhbmNlc3RvckZy
YWdtZW50cykgeworICAgICAgICAgICAgLy8gU2hpZnQgdGhlIGRpcnR5IHJlY3QgaW50byBmbG93
IHRocmVhZCBjb29yZGluYXRlcy4KKyAgICAgICAgICAgIExheW91dFJlY3QgZGlydHlSZWN0SW5G
bG93VGhyZWFkKGRpcnR5UmVjdCk7CisgICAgICAgICAgICBkaXJ0eVJlY3RJbkZsb3dUaHJlYWQu
bW92ZUJ5KC1vZmZzZXRXaXRoaW5QYXJlbnRQYWdpbmF0ZWRMYXllciArIC1hbmNlc3RvckZyYWdt
ZW50LnBhZ2luYXRpb25PZmZzZXQpOworICAgICAgICAgICAgCisgICAgICAgICAgICBzaXplX3Qg
b2xkU2l6ZSA9IGZyYWdtZW50cy5zaXplKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8v
IFRlbGwgdGhlIGZsb3cgdGhyZWFkIHRvIGNvbGxlY3QgdGhlIGZyYWdtZW50cy4gV2UgcGFzcyBl
bm91Z2ggaW5mb3JtYXRpb24gdG8gY3JlYXRlIGEgbWluaW1hbCBudW1iZXIgb2YgZnJhZ21lbnRz
IGJhc2VkIG9mZiB0aGUgcGFnZXMvY29sdW1ucworICAgICAgICAgICAgLy8gdGhhdCBpbnRlcnNl
Y3QgdGhlIGFjdHVhbCBkaXJ0eVJlY3QgYXMgd2VsbCBhcyB0aGUgcGFnZXMvY29sdW1ucyB0aGF0
IGludGVyc2VjdCBvdXIgbGF5ZXIncyBib3VuZGluZyBib3guCisgICAgICAgICAgICBlbmNsb3Np
bmdGbG93VGhyZWFkLmNvbGxlY3RMYXllckZyYWdtZW50cyhmcmFnbWVudHMsIGxheWVyQm91bmRp
bmdCb3hJbkZsb3dUaHJlYWQsIGRpcnR5UmVjdEluRmxvd1RocmVhZCk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIHNpemVfdCBuZXdTaXplID0gZnJhZ21lbnRzLnNpemUoKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgaWYgKG9sZFNpemUgPT0gbmV3U2l6ZSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKIAorICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IG9sZFNpemU7IGkgPCBu
ZXdTaXplOyArK2kpIHsKKyAgICAgICAgICAgICAgICBMYXllckZyYWdtZW50JiBmcmFnbWVudCA9
IGZyYWdtZW50cy5hdChpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBT
ZXQgb3VyIGZvdXIgcmVjdHMgd2l0aCBhbGwgY2xpcHBpbmcgYXBwbGllZCB0aGF0IHdhcyBpbnRl
cm5hbCB0byB0aGUgZmxvdyB0aHJlYWQuCisgICAgICAgICAgICAgICAgZnJhZ21lbnQuc2V0UmVj
dHMobGF5ZXJCb3VuZHNJbkZsb3dUaHJlYWQsIGJhY2tncm91bmRSZWN0SW5GbG93VGhyZWFkLCBm
b3JlZ3JvdW5kUmVjdEluRmxvd1RocmVhZCwgb3V0bGluZVJlY3RJbkZsb3dUaHJlYWQpOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFNoaWZ0IHRvIHRoZSByb290LXJlbGF0
aXZlIHBoeXNpY2FsIHBvc2l0aW9uIHVzZWQgd2hlbiBwYWludGluZyB0aGUgZmxvdyB0aHJlYWQg
aW4gdGhpcyBmcmFnbWVudC4KKyAgICAgICAgICAgICAgICBmcmFnbWVudC5tb3ZlQnkoYW5jZXN0
b3JGcmFnbWVudC5wYWdpbmF0aW9uT2Zmc2V0ICsgZnJhZ21lbnQucGFnaW5hdGlvbk9mZnNldCAr
IG9mZnNldFdpdGhpblBhcmVudFBhZ2luYXRlZExheWVyKTsKKworICAgICAgICAgICAgICAgIC8v
IEludGVyc2VjdCB0aGUgZnJhZ21lbnQgd2l0aCBvdXIgYW5jZXN0b3IncyBiYWNrZ3JvdW5kIGNs
aXAgc28gdGhhdCBlLmcuLCBjb2x1bW5zIGluIGFuIG92ZXJmbG93OmhpZGRlbiBibG9jayBhcmUK
KyAgICAgICAgICAgICAgICAvLyBwcm9wZXJseSBjbGlwcGVkIGJ5IHRoZSBvdmVyZmxvdy4KKyAg
ICAgICAgICAgICAgICBmcmFnbWVudC5pbnRlcnNlY3QoYW5jZXN0b3JGcmFnbWVudC5wYWdpbmF0
aW9uQ2xpcCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gTm93IGludGVy
c2VjdCB3aXRoIG91ciBwYWdpbmF0aW9uIGNsaXAuIFRoaXMgd2lsbCB0eXBpY2FsbHkgbWVhbiB3
ZSdyZSBqdXN0IGludGVyc2VjdGluZyB0aGUgZGlydHkgcmVjdCB3aXRoIHRoZSBjb2x1bW4KKyAg
ICAgICAgICAgICAgICAvLyBjbGlwLCBzbyB0aGUgY29sdW1uIGNsaXAgZW5kcyB1cCBiZWluZyBh
bGwgd2UgYXBwbHkuCisgICAgICAgICAgICAgICAgZnJhZ21lbnQuaW50ZXJzZWN0KGZyYWdtZW50
LnBhZ2luYXRpb25DbGlwKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAo
YXBwbHlSb290T2Zmc2V0VG9GcmFnbWVudHMgPT0gQXBwbHlSb290T2Zmc2V0VG9GcmFnbWVudHMp
CisgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50LnBhZ2luYXRpb25PZmZzZXQgPSBmcmFnbWVu
dC5wYWdpbmF0aW9uT2Zmc2V0ICsgb2Zmc2V0V2l0aGluUGFyZW50UGFnaW5hdGVkTGF5ZXI7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgCiAgICAgLy8gU2hpZnQgdGhlIGRpcnR5IHJlY3QgaW50byBmbG93IHRocmVhZCBjb29y
ZGluYXRlcy4KICAgICBMYXlvdXRQb2ludCBvZmZzZXRPZlBhZ2luYXRpb25MYXllckZyb21Sb290
OwogICAgIGVuY2xvc2luZ1BhZ2luYXRpb25MYXllcigpLT5jb252ZXJ0VG9MYXllckNvb3Jkcyhy
b290TGF5ZXIsIG9mZnNldE9mUGFnaW5hdGlvbkxheWVyRnJvbVJvb3QpOwpAQCAtNDI3OSw3ICs0
MzYxLDYgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y29sbGVjdEZyYWdtZW50cyhMYXllcgogCiAgICAg
Ly8gVGVsbCB0aGUgZmxvdyB0aHJlYWQgdG8gY29sbGVjdCB0aGUgZnJhZ21lbnRzLiBXZSBwYXNz
IGVub3VnaCBpbmZvcm1hdGlvbiB0byBjcmVhdGUgYSBtaW5pbWFsIG51bWJlciBvZiBmcmFnbWVu
dHMgYmFzZWQgb2ZmIHRoZSBwYWdlcy9jb2x1bW5zCiAgICAgLy8gdGhhdCBpbnRlcnNlY3QgdGhl
IGFjdHVhbCBkaXJ0eVJlY3QgYXMgd2VsbCBhcyB0aGUgcGFnZXMvY29sdW1ucyB0aGF0IGludGVy
c2VjdCBvdXIgbGF5ZXIncyBib3VuZGluZyBib3guCi0gICAgUmVuZGVyRmxvd1RocmVhZCYgZW5j
bG9zaW5nRmxvd1RocmVhZCA9IHRvUmVuZGVyRmxvd1RocmVhZChlbmNsb3NpbmdQYWdpbmF0aW9u
TGF5ZXIoKS0+cmVuZGVyZXIoKSk7CiAgICAgZW5jbG9zaW5nRmxvd1RocmVhZC5jb2xsZWN0TGF5
ZXJGcmFnbWVudHMoZnJhZ21lbnRzLCBsYXllckJvdW5kaW5nQm94SW5GbG93VGhyZWFkLCBkaXJ0
eVJlY3RJbkZsb3dUaHJlYWQpOwogICAgIAogICAgIGlmIChmcmFnbWVudHMuaXNFbXB0eSgpKQpA
QCAtNDI4Nyw5ICs0MzY4LDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y29sbGVjdEZyYWdtZW50cyhM
YXllcgogICAgIAogICAgIC8vIEdldCB0aGUgcGFyZW50IGNsaXAgcmVjdHMgb2YgdGhlIHBhZ2lu
YXRpb24gbGF5ZXIsIHNpbmNlIHdlIG5lZWQgdG8gaW50ZXJzZWN0IHdpdGggdGhhdCB3aGVuIHBh
aW50aW5nIGNvbHVtbiBjb250ZW50cy4KICAgICBDbGlwUmVjdCBhbmNlc3RvckNsaXBSZWN0ID0g
ZGlydHlSZWN0OwotICAgIGlmIChlbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXIoKS0+cGFyZW50KCkp
IHsKKyAgICBpZiAocGFnaW5hdGlvbkxheWVyLT5wYXJlbnQoKSkgewogICAgICAgICBDbGlwUmVj
dHNDb250ZXh0IGNsaXBSZWN0c0NvbnRleHQocm9vdExheWVyLCByZWdpb24sIGNsaXBSZWN0c1R5
cGUsIGluT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3ksIHJlc3BlY3RPdmVyZmxvd0NsaXAp
OwotICAgICAgICBhbmNlc3RvckNsaXBSZWN0ID0gZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVyKCkt
PmJhY2tncm91bmRDbGlwUmVjdChjbGlwUmVjdHNDb250ZXh0KTsKKyAgICAgICAgYW5jZXN0b3JD
bGlwUmVjdCA9IHBhZ2luYXRpb25MYXllci0+YmFja2dyb3VuZENsaXBSZWN0KGNsaXBSZWN0c0Nv
bnRleHQpOwogICAgICAgICBhbmNlc3RvckNsaXBSZWN0LmludGVyc2VjdChkaXJ0eVJlY3QpOwog
ICAgIH0KIApAQCAtNDMwOSw2ICs0MzkwLDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y29sbGVjdEZy
YWdtZW50cyhMYXllcgogICAgICAgICAvLyBOb3cgaW50ZXJzZWN0IHdpdGggb3VyIHBhZ2luYXRp
b24gY2xpcC4gVGhpcyB3aWxsIHR5cGljYWxseSBtZWFuIHdlJ3JlIGp1c3QgaW50ZXJzZWN0aW5n
IHRoZSBkaXJ0eSByZWN0IHdpdGggdGhlIGNvbHVtbgogICAgICAgICAvLyBjbGlwLCBzbyB0aGUg
Y29sdW1uIGNsaXAgZW5kcyB1cCBiZWluZyBhbGwgd2UgYXBwbHkuCiAgICAgICAgIGZyYWdtZW50
LmludGVyc2VjdChmcmFnbWVudC5wYWdpbmF0aW9uQ2xpcCk7CisgICAgICAgIAorICAgICAgICBp
ZiAoYXBwbHlSb290T2Zmc2V0VG9GcmFnbWVudHMgPT0gQXBwbHlSb290T2Zmc2V0VG9GcmFnbWVu
dHMpCisgICAgICAgICAgICBmcmFnbWVudC5wYWdpbmF0aW9uT2Zmc2V0ID0gZnJhZ21lbnQucGFn
aW5hdGlvbk9mZnNldCArIG9mZnNldE9mUGFnaW5hdGlvbkxheWVyRnJvbVJvb3Q7CiAgICAgfQog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAkocmV2aXNpb24g
MTY3Njc2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIzNiw2ICsyMzYsMTEgQEAgZW51bSBTaG91bGRSZXNwZWN0T3ZlcmZsb3dD
bGlwIHsKICAgICBSZXNwZWN0T3ZlcmZsb3dDbGlwCiB9OwogCitlbnVtIFNob3VsZEFwcGx5Um9v
dE9mZnNldFRvRnJhZ21lbnRzIHsKKyAgICBBcHBseVJvb3RPZmZzZXRUb0ZyYWdtZW50cywKKyAg
ICBJZ25vcmVSb290T2Zmc2V0Rm9yRnJhZ21lbnRzCit9OworCiBzdHJ1Y3QgQ2xpcFJlY3RzQ2Fj
aGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtOTMzLDYgKzkz
OCw4IEBAIHByaXZhdGU6CiAKICAgICBJbnRTaXplIGNsYW1wU2Nyb2xsT2Zmc2V0KGNvbnN0IElu
dFNpemUmKSBjb25zdDsKIAorICAgIFJlbmRlckxheWVyKiBlbmNsb3NpbmdQYWdpbmF0aW9uTGF5
ZXJJblN1YnRyZWUoY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllcikgY29uc3Q7CisKICAgICB2
b2lkIHNldE5leHRTaWJsaW5nKFJlbmRlckxheWVyKiBuZXh0KSB7IG1fbmV4dCA9IG5leHQ7IH0K
ICAgICB2b2lkIHNldFByZXZpb3VzU2libGluZyhSZW5kZXJMYXllciogcHJldikgeyBtX3ByZXZp
b3VzID0gcHJldjsgfQogICAgIHZvaWQgc2V0UGFyZW50KFJlbmRlckxheWVyKiBwYXJlbnQpOwpA
QCAtOTg0LDcgKzk5MSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbGxlY3RGcmFnbWVudHMo
TGF5ZXJGcmFnbWVudHMmLCBjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJSZWdp
b24qLCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QsCiAgICAgICAgIENsaXBSZWN0c1R5cGUs
IE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5IGluT3ZlcmxheVNjcm9sbGJhclNpemVSZWxl
dmFuY3kgPSBJZ25vcmVPdmVybGF5U2Nyb2xsYmFyU2l6ZSwKLSAgICAgICAgU2hvdWxkUmVzcGVj
dE92ZXJmbG93Q2xpcCA9IFJlc3BlY3RPdmVyZmxvd0NsaXAsIGNvbnN0IExheW91dFBvaW50KiBv
ZmZzZXRGcm9tUm9vdCA9IDAsIGNvbnN0IExheW91dFJlY3QqIGxheWVyQm91bmRpbmdCb3ggPSAw
KTsKKyAgICAgICAgU2hvdWxkUmVzcGVjdE92ZXJmbG93Q2xpcCA9IFJlc3BlY3RPdmVyZmxvd0Ns
aXAsIGNvbnN0IExheW91dFBvaW50KiBvZmZzZXRGcm9tUm9vdCA9IDAsIGNvbnN0IExheW91dFJl
Y3QqIGxheWVyQm91bmRpbmdCb3ggPSAwLCBTaG91bGRBcHBseVJvb3RPZmZzZXRUb0ZyYWdtZW50
cyA9IElnbm9yZVJvb3RPZmZzZXRGb3JGcmFnbWVudHMpOwogICAgIHZvaWQgdXBkYXRlUGFpbnRp
bmdJbmZvRm9yRnJhZ21lbnRzKExheWVyRnJhZ21lbnRzJiwgY29uc3QgTGF5ZXJQYWludGluZ0lu
Zm8mLCBQYWludExheWVyRmxhZ3MsIGJvb2wgc2hvdWxkUGFpbnRDb250ZW50LCBjb25zdCBMYXlv
dXRQb2ludCogb2Zmc2V0RnJvbVJvb3QpOwogICAgIHZvaWQgcGFpbnRCYWNrZ3JvdW5kRm9yRnJh
Z21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0KiwgR3JhcGhpY3ND
b250ZXh0KiB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQsCiAgICAgICAgIGNvbnN0IExheW91dFJl
Y3QmIHRyYW5zcGFyZW5jeVBhaW50RGlydHlSZWN0LCBib29sIGhhdmVUcmFuc3BhcmVuY3ksIGNv
bnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBwYWlu
dGluZ1Jvb3RGb3JSZW5kZXJlcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNwcAkocmV2aXNpb24gMTY3
Njc2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1Ro
cmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Niw3ICsyNjYsNyBAQCBzdGF0aWMgYm9vbCBp
c1ZhbGlkQ29sdW1uU3Bhbm5lcihSZW5kZXJNCiAKIHZvaWQgUmVuZGVyTXVsdGlDb2x1bW5GbG93
VGhyZWFkOjpmbG93VGhyZWFkRGVzY2VuZGFudEluc2VydGVkKFJlbmRlck9iamVjdCogZGVzY2Vu
ZGFudCkKIHsKLSAgICBpZiAobV9iZWluZ0V2YWN1YXRlZCkKKyAgICBpZiAobV9iZWluZ0V2YWN1
YXRlZCB8fCBkZXNjZW5kYW50LT5pc0luRmxvd1JlbmRlckZsb3dUaHJlYWQoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIFJlbmRlck9iamVjdCogc3VidHJlZVJvb3QgPSBkZXNjZW5kYW50OwogICAg
IGZvciAoOyBkZXNjZW5kYW50OyBkZXNjZW5kYW50ID0gZGVzY2VuZGFudC0+bmV4dEluUHJlT3Jk
ZXIoc3VidHJlZVJvb3QpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcAkocmV2aXNpb24gMTY3Njc2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MjQsOCArMTkyNCwxMCBAQCB2
b2lkIFJlbmRlck9iamVjdDo6aW5zZXJ0ZWRJbnRvVHJlZSgpCiAKICAgICBpZiAoIWlzRmxvYXRp
bmcoKSAmJiBwYXJlbnQoKS0+Y2hpbGRyZW5JbmxpbmUoKSkKICAgICAgICAgcGFyZW50KCktPmRp
cnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKHRoaXMpOwotCi0gICAgaWYgKFJlbmRlckZsb3dUaHJl
YWQqIGZsb3dUaHJlYWQgPSBwYXJlbnQoKS0+Zmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpKQor
ICAgIAorICAgIGlmIChwYXJlbnQoKS0+aXNSZW5kZXJGbG93VGhyZWFkKCkpCisgICAgICAgIHRv
UmVuZGVyRmxvd1RocmVhZChwYXJlbnQoKSktPmZsb3dUaHJlYWREZXNjZW5kYW50SW5zZXJ0ZWQo
dGhpcyk7CisgICAgZWxzZSBpZiAoUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IHBhcmVu
dCgpLT5mbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCkpCiAgICAgICAgIGZsb3dUaHJlYWQtPmZs
b3dUaHJlYWREZXNjZW5kYW50SW5zZXJ0ZWQodGhpcyk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229935</attachid>
            <date>2014-04-22 18:04:22 -0700</date>
            <delta_ts>2014-04-22 19:28:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>23295</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NzY5MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE0LTA0LTIyICBEYXZpZCBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBbTmV3IE11bHRpY29sdW1uXSBOZXN0
ZWQgY29sdW1ucyBub3Qgd29ya2luZyBhdCBhbGwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE4MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgbmVzdGVkIHBhZ2luYXRpb24g
Y29udGV4dHMsIGFsbG93aW5nIGZvciBhbiBhcmJpdHJhcnkgbGV2ZWwKKyAgICAgICAgb2YgbmVz
dGluZyBvZiBtdWx0aWNvbHVtbiBsYXlvdXRzLiBUaGVyZSB3ZXJlIGEgbnVtYmVyIG9mIHRoaW5n
cyB0aGF0IGhhZCB0bworICAgICAgICBiZSBwYXRjaGVkIGluIG9yZGVyIGZvciB0aGlzIHRvIHdv
cmsuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OnJlZ2lvbkF0QmxvY2tPZmZzZXQpOgorICAgICAgICBNYWtlIHN1
cmUgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkcyBqdXN0IHJldHVybiBudWxsIGZvciByZWdp
b25zIGF0IGFueQorICAgICAgICBibG9jayBvZmZzZXQuIEluZGl2aWR1YWwgcmVnaW9uIHNldHMg
d2lsbCBiZSBjcmVhdGVkIGFzIHlvdSBjcm9zcyBhbmNlc3RvcgorICAgICAgICByZWdpb25zIGV2
ZW50dWFsbHksIHNvIHRoaXMgaXMganVzdCBnZXR0aW5nIGluIHRoZSB3YXkuCisKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OmVuY2xvc2luZ1BhZ2luYXRpb25MYXllckluU3VidHJlZSk6CisgICAgICAgIEFkZCBhIG5l
dyBoZWxwZXIgbWV0aG9kIGZvciBvYnRhaW5pbmcgYW4gZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVy
IHdoZW4KKyAgICAgICAgY29uc3RyYWluZWQgYnkgc29tZSByb290LiBUaGlzIGZ1bmN0aW9uIGVu
c3VyZXMgeW91IGRvbid0IGFjY2lkZW50YWxseQorICAgICAgICBjcm9zcyB5b3VyIHN1YnRyZWUg
cm9vdCB3aGVuIGxvb2tpbmcgZm9yIGVuY2xvc2luZyBwYWdpbmF0aW9uIGxheWVycy4KKworICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNvbGxlY3RGcmFnbWVudHMpOgorICAgICAgICBQ
YXRjaCBjb2xsZWN0RnJhZ21lbnRzIHRvIGtub3cgaG93IHRvIHJlY3VyIHRvIGNvbGxlY3QgYW5j
ZXN0b3IgZnJhZ21lbnRzCisgICAgICAgIGluIG9yZGVyIHRvIGFwcGx5IG5lc3RlZCBzcGxpdHRp
bmcgYXMgeW91IGNyb3NzIHBhZ2luYXRpb24gYm91bmRhcmllcy4KKworICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZVBhaW50aW5nSW5mb0ZvckZyYWdtZW50cyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y2FsY3VsYXRlQ2xpcFJlY3RzKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyRnJhZ21lbnQ6
OkxheWVyRnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJGcmFnbWVudDo6c2V0UmVj
dHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJGcmFnbWVudDo6bW92ZUJ5KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyRnJhZ21lbnQ6OmludGVyc2VjdCk6CisgICAgICAgIEltcHJvdmUgdGhl
IExheWVyRnJhZ21lbnQgc28gdGhhdCBpdCBjYWNoZXMgdHJhbnNmb3JtZWQgYm91bmRpbmcgYm94
ZXMgYXMKKyAgICAgICAgd2VsbC4gVGhpcyBpcyBuZWVkZWQgdG8gZml4IGludGVyc2VjdHNEYW1h
Z2VSZWN0IHNvIHRoYXQgaXQgZG9lc24ndCBncmFiCisgICAgICAgIHRoZSB3cm9uZyBib3VuZGlu
ZyBib3ggd2hlbiBjaGVja2luZyBpbmxpbmUgbGF5ZXJzIHRoYXQgYXJlIHBhZ2luYXRlZC4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkOjpmbG93VGhyZWFkRGVz
Y2VuZGFudEluc2VydGVkKToKKyAgICAgICAgSWdub3JlIGluc2VydGVkIGZsb3cgdGhyZWFkcyBp
bnNpZGUgYW4gYW5jZXN0b3IgZmxvdyB0aHJlYWQsIHNpbmNlIHdlIG9ubHkKKyAgICAgICAgY2Fy
ZSBhYm91dCB3aGF0IHRoZSBzZXRzIGRvLgorICAgICAgICAKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aW5zZXJ0
ZWRJbnRvVHJlZSk6CisgICAgICAgIE1ha2Ugc3VyZSB0aGF0IG5lc3RlZCBmbG93IHRocmVhZCBs
YXllcnMgcmV0dXJuIHRoZW1zZWx2ZXMgd2hlbiBhIGNoaWxkCisgICAgICAgIGlzIGluc2VydGVk
IGRpcmVjdGx5IHVuZGVyIHRoZW0uCisKIDIwMTQtMDQtMjIgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjE1NzMyOCk6IHBvcG92ZXIgdG8g
Y2hlY2sgaW50byBmbGlnaHQgYmEuY29tIGRpc21pc3NlcyBpbnN0YW50bHkgd2hlbiBmb2N1c2lu
ZyBmb3JtCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJl
dmlzaW9uIDE2NzY3NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4MjgsNiArNDgyOCw5IEBAIExheW91dFVuaXQgUmVuZGVy
QmxvY2s6Om9mZnNldEZyb21Mb2dpY2EKIAogUmVuZGVyUmVnaW9uKiBSZW5kZXJCbG9jazo6cmVn
aW9uQXRCbG9ja09mZnNldChMYXlvdXRVbml0IGJsb2NrT2Zmc2V0KSBjb25zdAogeworICAgIGlm
IChpc0luRmxvd1JlbmRlckZsb3dUaHJlYWQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICBS
ZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygp
OwogICAgIGlmICghZmxvd1RocmVhZCB8fCAhZmxvd1RocmVhZC0+aGFzVmFsaWRSZWdpb25JbmZv
KCkpCiAgICAgICAgIHJldHVybiAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAxNjc2NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjQwLDExICs0MjQwLDM1IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGlzdChWZWN0b3I8UmVuZGUKICAgICB9CiB9CiAKK1Jl
bmRlckxheWVyKiBSZW5kZXJMYXllcjo6ZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVySW5TdWJ0cmVl
KGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIpIGNvbnN0Cit7CisgICAgLy8gSWYgd2UgZG9u
J3QgaGF2ZSBhbiBlbmNsb3NpbmcgbGF5ZXIsIG9yIGlmIHRoZSByb290IGxheWVyIGlzIHRoZSBz
YW1lIGFzIHRoZSBlbmNsb3NpbmcgbGF5ZXIsCisgICAgLy8gdGhlbiBqdXN0IHJldHVybiB0aGUg
ZW5jbG9zaW5nIHBhZ2luYXRpb24gbGF5ZXIgKGl0IHdpbGwgYmUgMCBpbiB0aGUgZm9ybWVyIGNh
c2UgYW5kIHRoZSByb290TGF5ZXIgaW4gdGhlIGxhdHRlciBjYXNlKS4KKyAgICBpZiAoIW1fZW5j
bG9zaW5nUGFnaW5hdGlvbkxheWVyIHx8IHJvb3RMYXllciA9PSBtX2VuY2xvc2luZ1BhZ2luYXRp
b25MYXllcikKKyAgICAgICAgcmV0dXJuIG1fZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVyOworICAg
IAorICAgIC8vIFdhbGsgdXAgdGhlIGxheWVyIHRyZWUgYW5kIHNlZSB3aGljaCBsYXllciB3ZSBo
aXQgZmlyc3QuIElmIGl0J3MgdGhlIHJvb3QsIHRoZW4gdGhlIGVuY2xvc2luZyBwYWdpbmF0aW9u
CisgICAgLy8gbGF5ZXIgaXNuJ3QgaW4gb3VyIHN1YnRyZWUgYW5kIHdlIHJldHVybiAwLiBJZiB3
ZSBoaXQgdGhlIGVuY2xvc2luZyBwYWdpbmF0aW9uIGxheWVyIGZpcnN0LCB0aGVuCisgICAgLy8g
d2UgY2FuIHJldHVybiBpdC4KKyAgICBmb3IgKGNvbnN0IFJlbmRlckxheWVyKiBsYXllciA9IHRo
aXM7IGxheWVyOyBsYXllciA9IGxheWVyLT5wYXJlbnQoKSkgeworICAgICAgICBpZiAobGF5ZXIg
PT0gcm9vdExheWVyKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmIChsYXllciA9
PSBtX2VuY2xvc2luZ1BhZ2luYXRpb25MYXllcikKKyAgICAgICAgICAgIHJldHVybiBtX2VuY2xv
c2luZ1BhZ2luYXRpb25MYXllcjsKKyAgICB9CisgICAgCisgICAgLy8gVGhpcyBzaG91bGQgbmV2
ZXIgYmUgcmVhY2hlZCwgc2luY2UgYW4gZW5jbG9zaW5nIGxheWVyIHNob3VsZCBhbHdheXMgZWl0
aGVyIGJlIHRoZSByb290TGF5ZXIgb3IgYmUKKyAgICAvLyBvdXIgZW5jbG9zaW5nIHBhZ2luYXRp
b24gbGF5ZXIuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisK
IHZvaWQgUmVuZGVyTGF5ZXI6OmNvbGxlY3RGcmFnbWVudHMoTGF5ZXJGcmFnbWVudHMmIGZyYWdt
ZW50cywgY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyUmVnaW9uKiByZWdpb24s
IGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCwKICAgICBDbGlwUmVjdHNUeXBlIGNsaXBSZWN0
c1R5cGUsIE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5IGluT3ZlcmxheVNjcm9sbGJhclNp
emVSZWxldmFuY3ksIFNob3VsZFJlc3BlY3RPdmVyZmxvd0NsaXAgcmVzcGVjdE92ZXJmbG93Q2xp
cCwgY29uc3QgTGF5b3V0UG9pbnQqIG9mZnNldEZyb21Sb290LAotICAgIGNvbnN0IExheW91dFJl
Y3QqIGxheWVyQm91bmRpbmdCb3gpCisgICAgY29uc3QgTGF5b3V0UmVjdCogbGF5ZXJCb3VuZGlu
Z0JveCwgU2hvdWxkQXBwbHlSb290T2Zmc2V0VG9GcmFnbWVudHMgYXBwbHlSb290T2Zmc2V0VG9G
cmFnbWVudHMpCiB7Ci0gICAgaWYgKCFlbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXIoKSB8fCBoYXNU
cmFuc2Zvcm0oKSkgeworICAgIFJlbmRlckxheWVyKiBwYWdpbmF0aW9uTGF5ZXIgPSBlbmNsb3Np
bmdQYWdpbmF0aW9uTGF5ZXJJblN1YnRyZWUocm9vdExheWVyKTsKKyAgICBpZiAoIXBhZ2luYXRp
b25MYXllciB8fCBoYXNUcmFuc2Zvcm0oKSkgewogICAgICAgICAvLyBGb3IgdW5wYWdpbmF0ZWQg
bGF5ZXJzLCB0aGVyZSBpcyBvbmx5IG9uZSBmcmFnbWVudC4KICAgICAgICAgTGF5ZXJGcmFnbWVu
dCBmcmFnbWVudDsKICAgICAgICAgQ2xpcFJlY3RzQ29udGV4dCBjbGlwUmVjdHNDb250ZXh0KHJv
b3RMYXllciwgcmVnaW9uLCBjbGlwUmVjdHNUeXBlLCBpbk92ZXJsYXlTY3JvbGxiYXJTaXplUmVs
ZXZhbmN5LCByZXNwZWN0T3ZlcmZsb3dDbGlwKTsKQEAgLTQyNTUsMTEgKzQyNzksMTEgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6Y29sbGVjdEZyYWdtZW50cyhMYXllcgogICAgIAogICAgIC8vIENvbXB1
dGUgb3VyIG9mZnNldCB3aXRoaW4gdGhlIGVuY2xvc2luZyBwYWdpbmF0aW9uIGxheWVyLgogICAg
IExheW91dFBvaW50IG9mZnNldFdpdGhpblBhZ2luYXRlZExheWVyOwotICAgIGNvbnZlcnRUb0xh
eWVyQ29vcmRzKGVuY2xvc2luZ1BhZ2luYXRpb25MYXllcigpLCBvZmZzZXRXaXRoaW5QYWdpbmF0
ZWRMYXllcik7CisgICAgY29udmVydFRvTGF5ZXJDb29yZHMocGFnaW5hdGlvbkxheWVyLCBvZmZz
ZXRXaXRoaW5QYWdpbmF0ZWRMYXllcik7CiAgICAgCiAgICAgLy8gQ2FsY3VsYXRlIGNsaXAgcmVj
dHMgcmVsYXRpdmUgdG8gdGhlIGVuY2xvc2luZ1BhZ2luYXRpb25MYXllci4gVGhlIHB1cnBvc2Ug
b2YgdGhpcyBjYWxsIGlzIHRvIGRldGVybWluZSBvdXIgYm91bmRzIGNsaXBwZWQgdG8gaW50ZXJt
ZWRpYXRlCiAgICAgLy8gbGF5ZXJzIGJldHdlZW4gdXMgYW5kIHRoZSBwYWdpbmF0aW9uIGNvbnRl
eHQuIEl0J3MgaW1wb3J0YW50IHRvIG1pbmltaXplIHRoZSBudW1iZXIgb2YgZnJhZ21lbnRzIHdl
IG5lZWQgdG8gY3JlYXRlIGFuZCB0aGlzIGhlbHBzIHdpdGggdGhhdC4KLSAgICBDbGlwUmVjdHND
b250ZXh0IHBhZ2luYXRpb25DbGlwUmVjdHNDb250ZXh0KGVuY2xvc2luZ1BhZ2luYXRpb25MYXll
cigpLCByZWdpb24sIGNsaXBSZWN0c1R5cGUsIGluT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFu
Y3ksIHJlc3BlY3RPdmVyZmxvd0NsaXApOworICAgIENsaXBSZWN0c0NvbnRleHQgcGFnaW5hdGlv
bkNsaXBSZWN0c0NvbnRleHQocGFnaW5hdGlvbkxheWVyLCByZWdpb24sIGNsaXBSZWN0c1R5cGUs
IGluT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3ksIHJlc3BlY3RPdmVyZmxvd0NsaXApOwog
ICAgIExheW91dFJlY3QgbGF5ZXJCb3VuZHNJbkZsb3dUaHJlYWQ7CiAgICAgQ2xpcFJlY3QgYmFj
a2dyb3VuZFJlY3RJbkZsb3dUaHJlYWQ7CiAgICAgQ2xpcFJlY3QgZm9yZWdyb3VuZFJlY3RJbkZs
b3dUaHJlYWQ7CkBAIC00MjY4LDkgKzQyOTIsNjkgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y29sbGVj
dEZyYWdtZW50cyhMYXllcgogICAgICAgICBvdXRsaW5lUmVjdEluRmxvd1RocmVhZCwgJm9mZnNl
dFdpdGhpblBhZ2luYXRlZExheWVyKTsKICAgICAKICAgICAvLyBUYWtlIG91ciBib3VuZGluZyBi
b3ggd2l0aGluIHRoZSBmbG93IHRocmVhZCBhbmQgY2xpcCBpdC4KLSAgICBMYXlvdXRSZWN0IGxh
eWVyQm91bmRpbmdCb3hJbkZsb3dUaHJlYWQgPSBsYXllckJvdW5kaW5nQm94ID8gKmxheWVyQm91
bmRpbmdCb3ggOiBib3VuZGluZ0JveChlbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXIoKSwgMCwgJm9m
ZnNldFdpdGhpblBhZ2luYXRlZExheWVyKTsKKyAgICBMYXlvdXRSZWN0IGxheWVyQm91bmRpbmdC
b3hJbkZsb3dUaHJlYWQgPSBsYXllckJvdW5kaW5nQm94ID8gKmxheWVyQm91bmRpbmdCb3ggOiBi
b3VuZGluZ0JveChwYWdpbmF0aW9uTGF5ZXIsIDAsICZvZmZzZXRXaXRoaW5QYWdpbmF0ZWRMYXll
cik7CiAgICAgbGF5ZXJCb3VuZGluZ0JveEluRmxvd1RocmVhZC5pbnRlcnNlY3QoYmFja2dyb3Vu
ZFJlY3RJbkZsb3dUaHJlYWQucmVjdCgpKTsKKyAgICAKKyAgICBSZW5kZXJGbG93VGhyZWFkJiBl
bmNsb3NpbmdGbG93VGhyZWFkID0gdG9SZW5kZXJGbG93VGhyZWFkKHBhZ2luYXRpb25MYXllci0+
cmVuZGVyZXIoKSk7CisgICAgUmVuZGVyTGF5ZXIqIHBhcmVudFBhZ2luYXRpb25MYXllciA9IHBh
Z2luYXRpb25MYXllci0+cGFyZW50KCktPmVuY2xvc2luZ1BhZ2luYXRpb25MYXllckluU3VidHJl
ZShyb290TGF5ZXIpOworICAgIExheWVyRnJhZ21lbnRzIGFuY2VzdG9yRnJhZ21lbnRzOworICAg
IGlmIChwYXJlbnRQYWdpbmF0aW9uTGF5ZXIpIHsKKyAgICAgICAgLy8gQ29tcHV0ZSBhIGJvdW5k
aW5nIGJveCBhY2NvdW50aW5nIGZvciBmcmFnbWVudHMuCisgICAgICAgIExheW91dFJlY3QgbGF5
ZXJGcmFnbWVudEJvdW5kaW5nQm94SW5QYXJlbnRQYWdpbmF0aW9uTGF5ZXIgPSBlbmNsb3NpbmdG
bG93VGhyZWFkLmZyYWdtZW50c0JvdW5kaW5nQm94KGxheWVyQm91bmRpbmdCb3hJbkZsb3dUaHJl
YWQpOworICAgICAgICAKKyAgICAgICAgLy8gQ29udmVydCB0byBiZSBpbiB0aGUgYW5jZXN0b3Ig
cGFnaW5hdGlvbiBjb250ZXh0J3MgY29vcmRpbmF0ZSBzcGFjZS4KKyAgICAgICAgTGF5b3V0UG9p
bnQgb2Zmc2V0V2l0aGluUGFyZW50UGFnaW5hdGVkTGF5ZXI7CisgICAgICAgIHBhZ2luYXRpb25M
YXllci0+Y29udmVydFRvTGF5ZXJDb29yZHMocGFyZW50UGFnaW5hdGlvbkxheWVyLCBvZmZzZXRX
aXRoaW5QYXJlbnRQYWdpbmF0ZWRMYXllcik7CisgICAgICAgIGxheWVyRnJhZ21lbnRCb3VuZGlu
Z0JveEluUGFyZW50UGFnaW5hdGlvbkxheWVyLm1vdmVCeShvZmZzZXRXaXRoaW5QYXJlbnRQYWdp
bmF0ZWRMYXllcik7CisgICAgICAgIAorICAgICAgICAvLyBOb3cgY29sbGVjdCBhbmNlc3RvciBm
cmFnbWVudHMuCisgICAgICAgIHBhcmVudFBhZ2luYXRpb25MYXllci0+Y29sbGVjdEZyYWdtZW50
cyhhbmNlc3RvckZyYWdtZW50cywgcm9vdExheWVyLCByZWdpb24sIGRpcnR5UmVjdCwgY2xpcFJl
Y3RzVHlwZSwgaW5PdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSwgcmVzcGVjdE92ZXJmbG93
Q2xpcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxwdHIsICZsYXllckZyYWdtZW50Qm91bmRpbmdCb3hJblBhcmVudFBhZ2luYXRpb25MYXllciwg
QXBwbHlSb290T2Zmc2V0VG9GcmFnbWVudHMpOworICAgICAgICAKKyAgICAgICAgaWYgKGFuY2Vz
dG9yRnJhZ21lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisg
ICAgICAgIGZvciAoYXV0byYgYW5jZXN0b3JGcmFnbWVudCA6IGFuY2VzdG9yRnJhZ21lbnRzKSB7
CisgICAgICAgICAgICAvLyBTaGlmdCB0aGUgZGlydHkgcmVjdCBpbnRvIGZsb3cgdGhyZWFkIGNv
b3JkaW5hdGVzLgorICAgICAgICAgICAgTGF5b3V0UmVjdCBkaXJ0eVJlY3RJbkZsb3dUaHJlYWQo
ZGlydHlSZWN0KTsKKyAgICAgICAgICAgIGRpcnR5UmVjdEluRmxvd1RocmVhZC5tb3ZlQnkoLW9m
ZnNldFdpdGhpblBhcmVudFBhZ2luYXRlZExheWVyICsgLWFuY2VzdG9yRnJhZ21lbnQucGFnaW5h
dGlvbk9mZnNldCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHNpemVfdCBvbGRTaXplID0g
ZnJhZ21lbnRzLnNpemUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gVGVsbCB0aGUg
ZmxvdyB0aHJlYWQgdG8gY29sbGVjdCB0aGUgZnJhZ21lbnRzLiBXZSBwYXNzIGVub3VnaCBpbmZv
cm1hdGlvbiB0byBjcmVhdGUgYSBtaW5pbWFsIG51bWJlciBvZiBmcmFnbWVudHMgYmFzZWQgb2Zm
IHRoZSBwYWdlcy9jb2x1bW5zCisgICAgICAgICAgICAvLyB0aGF0IGludGVyc2VjdCB0aGUgYWN0
dWFsIGRpcnR5UmVjdCBhcyB3ZWxsIGFzIHRoZSBwYWdlcy9jb2x1bW5zIHRoYXQgaW50ZXJzZWN0
IG91ciBsYXllcidzIGJvdW5kaW5nIGJveC4KKyAgICAgICAgICAgIGVuY2xvc2luZ0Zsb3dUaHJl
YWQuY29sbGVjdExheWVyRnJhZ21lbnRzKGZyYWdtZW50cywgbGF5ZXJCb3VuZGluZ0JveEluRmxv
d1RocmVhZCwgZGlydHlSZWN0SW5GbG93VGhyZWFkKTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgc2l6ZV90IG5ld1NpemUgPSBmcmFnbWVudHMuc2l6ZSgpOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBpZiAob2xkU2l6ZSA9PSBuZXdTaXplKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogCisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gb2xkU2l6ZTsgaSA8IG5ld1NpemU7ICsr
aSkgeworICAgICAgICAgICAgICAgIExheWVyRnJhZ21lbnQmIGZyYWdtZW50ID0gZnJhZ21lbnRz
LmF0KGkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFNldCBvdXIgZm91
ciByZWN0cyB3aXRoIGFsbCBjbGlwcGluZyBhcHBsaWVkIHRoYXQgd2FzIGludGVybmFsIHRvIHRo
ZSBmbG93IHRocmVhZC4KKyAgICAgICAgICAgICAgICBmcmFnbWVudC5zZXRSZWN0cyhsYXllckJv
dW5kc0luRmxvd1RocmVhZCwgYmFja2dyb3VuZFJlY3RJbkZsb3dUaHJlYWQsIGZvcmVncm91bmRS
ZWN0SW5GbG93VGhyZWFkLCBvdXRsaW5lUmVjdEluRmxvd1RocmVhZCwgJmxheWVyQm91bmRpbmdC
b3hJbkZsb3dUaHJlYWQpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFNo
aWZ0IHRvIHRoZSByb290LXJlbGF0aXZlIHBoeXNpY2FsIHBvc2l0aW9uIHVzZWQgd2hlbiBwYWlu
dGluZyB0aGUgZmxvdyB0aHJlYWQgaW4gdGhpcyBmcmFnbWVudC4KKyAgICAgICAgICAgICAgICBm
cmFnbWVudC5tb3ZlQnkoYW5jZXN0b3JGcmFnbWVudC5wYWdpbmF0aW9uT2Zmc2V0ICsgZnJhZ21l
bnQucGFnaW5hdGlvbk9mZnNldCArIG9mZnNldFdpdGhpblBhcmVudFBhZ2luYXRlZExheWVyKTsK
KworICAgICAgICAgICAgICAgIC8vIEludGVyc2VjdCB0aGUgZnJhZ21lbnQgd2l0aCBvdXIgYW5j
ZXN0b3IncyBiYWNrZ3JvdW5kIGNsaXAgc28gdGhhdCBlLmcuLCBjb2x1bW5zIGluIGFuIG92ZXJm
bG93OmhpZGRlbiBibG9jayBhcmUKKyAgICAgICAgICAgICAgICAvLyBwcm9wZXJseSBjbGlwcGVk
IGJ5IHRoZSBvdmVyZmxvdy4KKyAgICAgICAgICAgICAgICBmcmFnbWVudC5pbnRlcnNlY3QoYW5j
ZXN0b3JGcmFnbWVudC5wYWdpbmF0aW9uQ2xpcCk7CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgLy8gTm93IGludGVyc2VjdCB3aXRoIG91ciBwYWdpbmF0aW9uIGNsaXAuIFRoaXMg
d2lsbCB0eXBpY2FsbHkgbWVhbiB3ZSdyZSBqdXN0IGludGVyc2VjdGluZyB0aGUgZGlydHkgcmVj
dCB3aXRoIHRoZSBjb2x1bW4KKyAgICAgICAgICAgICAgICAvLyBjbGlwLCBzbyB0aGUgY29sdW1u
IGNsaXAgZW5kcyB1cCBiZWluZyBhbGwgd2UgYXBwbHkuCisgICAgICAgICAgICAgICAgZnJhZ21l
bnQuaW50ZXJzZWN0KGZyYWdtZW50LnBhZ2luYXRpb25DbGlwKTsKKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICBpZiAoYXBwbHlSb290T2Zmc2V0VG9GcmFnbWVudHMgPT0gQXBwbHlS
b290T2Zmc2V0VG9GcmFnbWVudHMpCisgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50LnBhZ2lu
YXRpb25PZmZzZXQgPSBmcmFnbWVudC5wYWdpbmF0aW9uT2Zmc2V0ICsgb2Zmc2V0V2l0aGluUGFy
ZW50UGFnaW5hdGVkTGF5ZXI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCiAgICAgLy8gU2hpZnQgdGhlIGRpcnR5IHJlY3Qg
aW50byBmbG93IHRocmVhZCBjb29yZGluYXRlcy4KICAgICBMYXlvdXRQb2ludCBvZmZzZXRPZlBh
Z2luYXRpb25MYXllckZyb21Sb290OwogICAgIGVuY2xvc2luZ1BhZ2luYXRpb25MYXllcigpLT5j
b252ZXJ0VG9MYXllckNvb3Jkcyhyb290TGF5ZXIsIG9mZnNldE9mUGFnaW5hdGlvbkxheWVyRnJv
bVJvb3QpOwpAQCAtNDI3OSw3ICs0MzYzLDYgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y29sbGVjdEZy
YWdtZW50cyhMYXllcgogCiAgICAgLy8gVGVsbCB0aGUgZmxvdyB0aHJlYWQgdG8gY29sbGVjdCB0
aGUgZnJhZ21lbnRzLiBXZSBwYXNzIGVub3VnaCBpbmZvcm1hdGlvbiB0byBjcmVhdGUgYSBtaW5p
bWFsIG51bWJlciBvZiBmcmFnbWVudHMgYmFzZWQgb2ZmIHRoZSBwYWdlcy9jb2x1bW5zCiAgICAg
Ly8gdGhhdCBpbnRlcnNlY3QgdGhlIGFjdHVhbCBkaXJ0eVJlY3QgYXMgd2VsbCBhcyB0aGUgcGFn
ZXMvY29sdW1ucyB0aGF0IGludGVyc2VjdCBvdXIgbGF5ZXIncyBib3VuZGluZyBib3guCi0gICAg
UmVuZGVyRmxvd1RocmVhZCYgZW5jbG9zaW5nRmxvd1RocmVhZCA9IHRvUmVuZGVyRmxvd1RocmVh
ZChlbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXIoKS0+cmVuZGVyZXIoKSk7CiAgICAgZW5jbG9zaW5n
Rmxvd1RocmVhZC5jb2xsZWN0TGF5ZXJGcmFnbWVudHMoZnJhZ21lbnRzLCBsYXllckJvdW5kaW5n
Qm94SW5GbG93VGhyZWFkLCBkaXJ0eVJlY3RJbkZsb3dUaHJlYWQpOwogICAgIAogICAgIGlmIChm
cmFnbWVudHMuaXNFbXB0eSgpKQpAQCAtNDI4Nyw5ICs0MzcwLDkgQEAgdm9pZCBSZW5kZXJMYXll
cjo6Y29sbGVjdEZyYWdtZW50cyhMYXllcgogICAgIAogICAgIC8vIEdldCB0aGUgcGFyZW50IGNs
aXAgcmVjdHMgb2YgdGhlIHBhZ2luYXRpb24gbGF5ZXIsIHNpbmNlIHdlIG5lZWQgdG8gaW50ZXJz
ZWN0IHdpdGggdGhhdCB3aGVuIHBhaW50aW5nIGNvbHVtbiBjb250ZW50cy4KICAgICBDbGlwUmVj
dCBhbmNlc3RvckNsaXBSZWN0ID0gZGlydHlSZWN0OwotICAgIGlmIChlbmNsb3NpbmdQYWdpbmF0
aW9uTGF5ZXIoKS0+cGFyZW50KCkpIHsKKyAgICBpZiAocGFnaW5hdGlvbkxheWVyLT5wYXJlbnQo
KSkgewogICAgICAgICBDbGlwUmVjdHNDb250ZXh0IGNsaXBSZWN0c0NvbnRleHQocm9vdExheWVy
LCByZWdpb24sIGNsaXBSZWN0c1R5cGUsIGluT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3ks
IHJlc3BlY3RPdmVyZmxvd0NsaXApOwotICAgICAgICBhbmNlc3RvckNsaXBSZWN0ID0gZW5jbG9z
aW5nUGFnaW5hdGlvbkxheWVyKCktPmJhY2tncm91bmRDbGlwUmVjdChjbGlwUmVjdHNDb250ZXh0
KTsKKyAgICAgICAgYW5jZXN0b3JDbGlwUmVjdCA9IHBhZ2luYXRpb25MYXllci0+YmFja2dyb3Vu
ZENsaXBSZWN0KGNsaXBSZWN0c0NvbnRleHQpOwogICAgICAgICBhbmNlc3RvckNsaXBSZWN0Lmlu
dGVyc2VjdChkaXJ0eVJlY3QpOwogICAgIH0KIApAQCAtNDI5Nyw3ICs0MzgwLDcgQEAgdm9pZCBS
ZW5kZXJMYXllcjo6Y29sbGVjdEZyYWdtZW50cyhMYXllcgogICAgICAgICBMYXllckZyYWdtZW50
JiBmcmFnbWVudCA9IGZyYWdtZW50cy5hdChpKTsKICAgICAgICAgCiAgICAgICAgIC8vIFNldCBv
dXIgZm91ciByZWN0cyB3aXRoIGFsbCBjbGlwcGluZyBhcHBsaWVkIHRoYXQgd2FzIGludGVybmFs
IHRvIHRoZSBmbG93IHRocmVhZC4KLSAgICAgICAgZnJhZ21lbnQuc2V0UmVjdHMobGF5ZXJCb3Vu
ZHNJbkZsb3dUaHJlYWQsIGJhY2tncm91bmRSZWN0SW5GbG93VGhyZWFkLCBmb3JlZ3JvdW5kUmVj
dEluRmxvd1RocmVhZCwgb3V0bGluZVJlY3RJbkZsb3dUaHJlYWQpOworICAgICAgICBmcmFnbWVu
dC5zZXRSZWN0cyhsYXllckJvdW5kc0luRmxvd1RocmVhZCwgYmFja2dyb3VuZFJlY3RJbkZsb3dU
aHJlYWQsIGZvcmVncm91bmRSZWN0SW5GbG93VGhyZWFkLCBvdXRsaW5lUmVjdEluRmxvd1RocmVh
ZCwgJmxheWVyQm91bmRpbmdCb3hJbkZsb3dUaHJlYWQpOwogICAgICAgICAKICAgICAgICAgLy8g
U2hpZnQgdG8gdGhlIHJvb3QtcmVsYXRpdmUgcGh5c2ljYWwgcG9zaXRpb24gdXNlZCB3aGVuIHBh
aW50aW5nIHRoZSBmbG93IHRocmVhZCBpbiB0aGlzIGZyYWdtZW50LgogICAgICAgICBmcmFnbWVu
dC5tb3ZlQnkoZnJhZ21lbnQucGFnaW5hdGlvbk9mZnNldCArIG9mZnNldE9mUGFnaW5hdGlvbkxh
eWVyRnJvbVJvb3QpOwpAQCAtNDMwOSw2ICs0MzkyLDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y29s
bGVjdEZyYWdtZW50cyhMYXllcgogICAgICAgICAvLyBOb3cgaW50ZXJzZWN0IHdpdGggb3VyIHBh
Z2luYXRpb24gY2xpcC4gVGhpcyB3aWxsIHR5cGljYWxseSBtZWFuIHdlJ3JlIGp1c3QgaW50ZXJz
ZWN0aW5nIHRoZSBkaXJ0eSByZWN0IHdpdGggdGhlIGNvbHVtbgogICAgICAgICAvLyBjbGlwLCBz
byB0aGUgY29sdW1uIGNsaXAgZW5kcyB1cCBiZWluZyBhbGwgd2UgYXBwbHkuCiAgICAgICAgIGZy
YWdtZW50LmludGVyc2VjdChmcmFnbWVudC5wYWdpbmF0aW9uQ2xpcCk7CisgICAgICAgIAorICAg
ICAgICBpZiAoYXBwbHlSb290T2Zmc2V0VG9GcmFnbWVudHMgPT0gQXBwbHlSb290T2Zmc2V0VG9G
cmFnbWVudHMpCisgICAgICAgICAgICBmcmFnbWVudC5wYWdpbmF0aW9uT2Zmc2V0ID0gZnJhZ21l
bnQucGFnaW5hdGlvbk9mZnNldCArIG9mZnNldE9mUGFnaW5hdGlvbkxheWVyRnJvbVJvb3Q7CiAg
ICAgfQogfQogCkBAIC00MzIxLDcgKzQ0MDcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVQ
YWludGluZ0luZm9Gb3JGCiAgICAgICAgIGZyYWdtZW50LnNob3VsZFBhaW50Q29udGVudCA9IHNo
b3VsZFBhaW50Q29udGVudDsKICAgICAgICAgaWYgKHRoaXMgIT0gbG9jYWxQYWludGluZ0luZm8u
cm9vdExheWVyIHx8ICEobG9jYWxQYWludEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nT3ZlcmZs
b3dDb250ZW50cykpIHsKICAgICAgICAgICAgIExheW91dFBvaW50IG5ld09mZnNldEZyb21Sb290
ID0gKm9mZnNldEZyb21Sb290ICsgZnJhZ21lbnQucGFnaW5hdGlvbk9mZnNldDsKLSAgICAgICAg
ICAgIGZyYWdtZW50LnNob3VsZFBhaW50Q29udGVudCAmPSBpbnRlcnNlY3RzRGFtYWdlUmVjdChm
cmFnbWVudC5sYXllckJvdW5kcywgZnJhZ21lbnQuYmFja2dyb3VuZFJlY3QucmVjdCgpLCBsb2Nh
bFBhaW50aW5nSW5mby5yb290TGF5ZXIsICZuZXdPZmZzZXRGcm9tUm9vdCwgbG9jYWxQYWludGlu
Z0luZm8ucmVuZGVyTmFtZWRGbG93RnJhZ21lbnQpOworICAgICAgICAgICAgZnJhZ21lbnQuc2hv
dWxkUGFpbnRDb250ZW50ICY9IGludGVyc2VjdHNEYW1hZ2VSZWN0KGZyYWdtZW50LmxheWVyQm91
bmRzLCBmcmFnbWVudC5iYWNrZ3JvdW5kUmVjdC5yZWN0KCksIGxvY2FsUGFpbnRpbmdJbmZvLnJv
b3RMYXllciwgJm5ld09mZnNldEZyb21Sb290LCBsb2NhbFBhaW50aW5nSW5mby5yZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudCwgZnJhZ21lbnQuaGFzQm91bmRpbmdCb3ggPyAmZnJhZ21lbnQuYm91bmRp
bmdCb3ggOiAwKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTU2NTAsNyArNTczNiw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OnJlcGFpbnRCbG9ja1NlbGVjdGlvbkcKICAgICAgICAgcmVuZGVyZXIo
KS5yZXBhaW50UmVjdGFuZ2xlKHJlY3QpOwogfQogCi1ib29sIFJlbmRlckxheWVyOjppbnRlcnNl
Y3RzRGFtYWdlUmVjdChjb25zdCBMYXlvdXRSZWN0JiBsYXllckJvdW5kcywgY29uc3QgTGF5b3V0
UmVjdCYgZGFtYWdlUmVjdCwgY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgY29uc3QgTGF5
b3V0UG9pbnQqIG9mZnNldEZyb21Sb290LCBSZW5kZXJSZWdpb24qIHJlZ2lvbikgY29uc3QKK2Jv
b2wgUmVuZGVyTGF5ZXI6OmludGVyc2VjdHNEYW1hZ2VSZWN0KGNvbnN0IExheW91dFJlY3QmIGxh
eWVyQm91bmRzLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBSZW5kZXJMYXll
ciogcm9vdExheWVyLCBjb25zdCBMYXlvdXRQb2ludCogb2Zmc2V0RnJvbVJvb3QsIFJlbmRlclJl
Z2lvbiogcmVnaW9uLCBjb25zdCBMYXlvdXRSZWN0KiBjYWNoZWRCb3VuZGluZ0JveCkgY29uc3QK
IHsKICAgICAvLyBBbHdheXMgZXhhbWluZSB0aGUgY2FudmFzIGFuZCB0aGUgcm9vdC4KICAgICAv
LyBGSVhNRTogQ291bGQgZWxpbWluYXRlIHRoZSBpc1Jvb3QoKSBjaGVjayBpZiB3ZSBmaXggYmFj
a2dyb3VuZCBwYWludGluZyBzbyB0aGF0IHRoZSBSZW5kZXJWaWV3CkBAIC01Njc4LDkgKzU3NjQs
MTMgQEAgYm9vbCBSZW5kZXJMYXllcjo6aW50ZXJzZWN0c0RhbWFnZVJlY3QoYwogICAgICAgICBp
ZiAoYi5pbnRlcnNlY3RzKGRhbWFnZVJlY3QpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQotCisgICAgCiAgICAgLy8gT3RoZXJ3aXNlIHdlIG5lZWQgdG8gY29tcHV0ZSB0aGUgYm91
bmRpbmcgYm94IG9mIHRoaXMgc2luZ2xlIGxheWVyIGFuZCBzZWUgaWYgaXQgaW50ZXJzZWN0cwot
ICAgIC8vIHRoZSBkYW1hZ2UgcmVjdC4KKyAgICAvLyB0aGUgZGFtYWdlIHJlY3QuIEl0J3MgcG9z
c2libGUgdGhlIGZyYWdtZW50IGNvbXB1dGVkIHRoZSBib3VuZGluZyBib3ggYWxyZWFkeSwgaW4g
d2hpY2ggY2FzZSB3ZQorICAgIC8vIGNhbiB1c2UgdGhlIGNhY2hlZCB2YWx1ZS4KKyAgICBpZiAo
Y2FjaGVkQm91bmRpbmdCb3gpCisgICAgICAgIHJldHVybiBjYWNoZWRCb3VuZGluZ0JveC0+aW50
ZXJzZWN0cyhkYW1hZ2VSZWN0KTsKKyAgICAKICAgICByZXR1cm4gYm91bmRpbmdCb3gocm9vdExh
eWVyLCAwLCBvZmZzZXRGcm9tUm9vdCkuaW50ZXJzZWN0cyhkYW1hZ2VSZWN0KTsKIH0KIApAQCAt
NTczNCwyNiArNTgyNCwzMiBAQCBMYXlvdXRSZWN0IFJlbmRlckxheWVyOjpib3VuZGluZ0JveChj
b25zCiAgICAgICAgIHJlbmRlckJveCgpLT5mbGlwRm9yV3JpdGluZ01vZGUocmVzdWx0KTsKICAg
ICBlbHNlCiAgICAgICAgIHJlbmRlcmVyKCkuY29udGFpbmluZ0Jsb2NrKCktPmZsaXBGb3JXcml0
aW5nTW9kZShyZXN1bHQpOwotCi0gICAgaWYgKGVuY2xvc2luZ1BhZ2luYXRpb25MYXllcigpICYm
IChmbGFncyAmIFVzZUZyYWdtZW50Qm94ZXMpKSB7CisgICAgCisgICAgY29uc3QgUmVuZGVyTGF5
ZXIqIHBhZ2luYXRpb25MYXllciA9IChmbGFncyAmIFVzZUZyYWdtZW50Qm94ZXMpID8gZW5jbG9z
aW5nUGFnaW5hdGlvbkxheWVySW5TdWJ0cmVlKGFuY2VzdG9yTGF5ZXIpIDogMDsKKyAgICBjb25z
dCBSZW5kZXJMYXllciogY2hpbGRMYXllciA9IHRoaXM7CisgICAgYm9vbCBpc1BhZ2luYXRlZCA9
IHBhZ2luYXRpb25MYXllcjsKKyAgICAKKyAgICB3aGlsZSAocGFnaW5hdGlvbkxheWVyKSB7CiAg
ICAgICAgIC8vIFNwbGl0IG91ciBib3ggdXAgaW50byB0aGUgYWN0dWFsIGZyYWdtZW50IGJveGVz
IHRoYXQgcmVuZGVyIGluIHRoZSBjb2x1bW5zL3BhZ2VzIGFuZCB1bml0ZSB0aG9zZSB0b2dldGhl
ciB0bwogICAgICAgICAvLyBnZXQgb3VyIHRydWUgYm91bmRpbmcgYm94LgogICAgICAgICBMYXlv
dXRQb2ludCBvZmZzZXRXaXRoaW5QYWdpbmF0aW9uTGF5ZXI7Ci0gICAgICAgIGNvbnZlcnRUb0xh
eWVyQ29vcmRzKGVuY2xvc2luZ1BhZ2luYXRpb25MYXllcigpLCBvZmZzZXRXaXRoaW5QYWdpbmF0
aW9uTGF5ZXIpOyAgICAgICAgCisgICAgICAgIGNoaWxkTGF5ZXItPmNvbnZlcnRUb0xheWVyQ29v
cmRzKHBhZ2luYXRpb25MYXllciwgb2Zmc2V0V2l0aGluUGFnaW5hdGlvbkxheWVyKTsKICAgICAg
ICAgcmVzdWx0Lm1vdmVCeShvZmZzZXRXaXRoaW5QYWdpbmF0aW9uTGF5ZXIpOwogCi0gICAgICAg
IFJlbmRlckZsb3dUaHJlYWQmIGVuY2xvc2luZ0Zsb3dUaHJlYWQgPSB0b1JlbmRlckZsb3dUaHJl
YWQoZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVyKCktPnJlbmRlcmVyKCkpOworICAgICAgICBSZW5k
ZXJGbG93VGhyZWFkJiBlbmNsb3NpbmdGbG93VGhyZWFkID0gdG9SZW5kZXJGbG93VGhyZWFkKHBh
Z2luYXRpb25MYXllci0+cmVuZGVyZXIoKSk7CiAgICAgICAgIHJlc3VsdCA9IGVuY2xvc2luZ0Zs
b3dUaHJlYWQuZnJhZ21lbnRzQm91bmRpbmdCb3gocmVzdWx0KTsKICAgICAgICAgCisgICAgICAg
IGNoaWxkTGF5ZXIgPSBwYWdpbmF0aW9uTGF5ZXI7CisgICAgICAgIHBhZ2luYXRpb25MYXllciA9
IHBhZ2luYXRpb25MYXllci0+cGFyZW50KCktPmVuY2xvc2luZ1BhZ2luYXRpb25MYXllckluU3Vi
dHJlZShhbmNlc3RvckxheWVyKTsKKyAgICB9CisKKyAgICBpZiAoaXNQYWdpbmF0ZWQpIHsKICAg
ICAgICAgTGF5b3V0UG9pbnQgZGVsdGE7Ci0gICAgICAgIGlmIChvZmZzZXRGcm9tUm9vdCkKLSAg
ICAgICAgICAgIGRlbHRhID0gKm9mZnNldEZyb21Sb290OwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBlbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXIoKS0+Y29udmVydFRvTGF5ZXJDb29yZHMoYW5j
ZXN0b3JMYXllciwgZGVsdGEpOworICAgICAgICBjaGlsZExheWVyLT5jb252ZXJ0VG9MYXllckNv
b3JkcyhhbmNlc3RvckxheWVyLCBkZWx0YSk7CiAgICAgICAgIHJlc3VsdC5tb3ZlQnkoZGVsdGEp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLQorICAgIAogICAgIExheW91dFBvaW50
IGRlbHRhOwogICAgIGlmIChvZmZzZXRGcm9tUm9vdCkKICAgICAgICAgZGVsdGEgPSAqb2Zmc2V0
RnJvbVJvb3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAkocmV2
aXNpb24gMTY3Njc2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzNiw2ICsyMzYsMTEgQEAgZW51bSBTaG91bGRSZXNwZWN0T3Zl
cmZsb3dDbGlwIHsKICAgICBSZXNwZWN0T3ZlcmZsb3dDbGlwCiB9OwogCitlbnVtIFNob3VsZEFw
cGx5Um9vdE9mZnNldFRvRnJhZ21lbnRzIHsKKyAgICBBcHBseVJvb3RPZmZzZXRUb0ZyYWdtZW50
cywKKyAgICBJZ25vcmVSb290T2Zmc2V0Rm9yRnJhZ21lbnRzCit9OworCiBzdHJ1Y3QgQ2xpcFJl
Y3RzQ2FjaGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtMjcz
LDE0ICsyNzgsMTkgQEAgc3RydWN0IExheWVyRnJhZ21lbnQgewogcHVibGljOgogICAgIExheWVy
RnJhZ21lbnQoKQogICAgICAgICA6IHNob3VsZFBhaW50Q29udGVudChmYWxzZSkKKyAgICAgICAg
LCBoYXNCb3VuZGluZ0JveChmYWxzZSkKICAgICB7IH0KIAotICAgIHZvaWQgc2V0UmVjdHMoY29u
c3QgTGF5b3V0UmVjdCYgYm91bmRzLCBjb25zdCBDbGlwUmVjdCYgYmFja2dyb3VuZCwgY29uc3Qg
Q2xpcFJlY3QmIGZvcmVncm91bmQsIGNvbnN0IENsaXBSZWN0JiBvdXRsaW5lKQorICAgIHZvaWQg
c2V0UmVjdHMoY29uc3QgTGF5b3V0UmVjdCYgYm91bmRzLCBjb25zdCBDbGlwUmVjdCYgYmFja2dy
b3VuZCwgY29uc3QgQ2xpcFJlY3QmIGZvcmVncm91bmQsIGNvbnN0IENsaXBSZWN0JiBvdXRsaW5l
LCBjb25zdCBMYXlvdXRSZWN0KiBiYm94KQogICAgIHsKICAgICAgICAgbGF5ZXJCb3VuZHMgPSBi
b3VuZHM7CiAgICAgICAgIGJhY2tncm91bmRSZWN0ID0gYmFja2dyb3VuZDsKICAgICAgICAgZm9y
ZWdyb3VuZFJlY3QgPSBmb3JlZ3JvdW5kOwogICAgICAgICBvdXRsaW5lUmVjdCA9IG91dGxpbmU7
CisgICAgICAgIGlmIChiYm94KSB7CisgICAgICAgICAgICBib3VuZGluZ0JveCA9ICpiYm94Owor
ICAgICAgICAgICAgaGFzQm91bmRpbmdCb3ggPSB0cnVlOworICAgICAgICB9CiAgICAgfQogICAg
IAogICAgIHZvaWQgbW92ZUJ5KGNvbnN0IExheW91dFBvaW50JiBvZmZzZXQpCkBAIC0yOTAsNiAr
MzAwLDcgQEAgcHVibGljOgogICAgICAgICBmb3JlZ3JvdW5kUmVjdC5tb3ZlQnkob2Zmc2V0KTsK
ICAgICAgICAgb3V0bGluZVJlY3QubW92ZUJ5KG9mZnNldCk7CiAgICAgICAgIHBhZ2luYXRpb25D
bGlwLm1vdmVCeShvZmZzZXQpOworICAgICAgICBib3VuZGluZ0JveC5tb3ZlQnkob2Zmc2V0KTsK
ICAgICB9CiAgICAgCiAgICAgdm9pZCBpbnRlcnNlY3QoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkK
QEAgLTI5NywxMyArMzA4LDE2IEBAIHB1YmxpYzoKICAgICAgICAgYmFja2dyb3VuZFJlY3QuaW50
ZXJzZWN0KHJlY3QpOwogICAgICAgICBmb3JlZ3JvdW5kUmVjdC5pbnRlcnNlY3QocmVjdCk7CiAg
ICAgICAgIG91dGxpbmVSZWN0LmludGVyc2VjdChyZWN0KTsKKyAgICAgICAgYm91bmRpbmdCb3gu
aW50ZXJzZWN0KHJlY3QpOwogICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFBhaW50Q29udGVu
dDsKKyAgICBib29sIGhhc0JvdW5kaW5nQm94OwogICAgIExheW91dFJlY3QgbGF5ZXJCb3VuZHM7
CiAgICAgQ2xpcFJlY3QgYmFja2dyb3VuZFJlY3Q7CiAgICAgQ2xpcFJlY3QgZm9yZWdyb3VuZFJl
Y3Q7CiAgICAgQ2xpcFJlY3Qgb3V0bGluZVJlY3Q7CisgICAgTGF5b3V0UmVjdCBib3VuZGluZ0Jv
eDsKICAgICAKICAgICAvLyBVbmlxdWUgdG8gcGFnaW5hdGVkIGZyYWdtZW50cy4gVGhlIHBoeXNp
Y2FsIHRyYW5zbGF0aW9uIHRvIGFwcGx5IHRvIHNoaWZ0IHRoZSBsYXllciB3aGVuIHBhaW50aW5n
L2hpdC10ZXN0aW5nLgogICAgIExheW91dFBvaW50IHBhZ2luYXRpb25PZmZzZXQ7CkBAIC02OTYs
NyArNzEwLDggQEAgcHVibGljOgogICAgIExheW91dFJlY3QgbG9jYWxDbGlwUmVjdChib29sJiBj
bGlwRXhjZWVkc0JvdW5kcykgY29uc3Q7IC8vIFJldHVybnMgdGhlIGJhY2tncm91bmQgY2xpcCBy
ZWN0IG9mIHRoZSBsYXllciBpbiB0aGUgbG9jYWwgY29vcmRpbmF0ZSBzcGFjZS4KIAogICAgIC8v
IFBhc3Mgb2Zmc2V0RnJvbVJvb3QgaWYga25vd24uCi0gICAgYm9vbCBpbnRlcnNlY3RzRGFtYWdl
UmVjdChjb25zdCBMYXlvdXRSZWN0JiBsYXllckJvdW5kcywgY29uc3QgTGF5b3V0UmVjdCYgZGFt
YWdlUmVjdCwgY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgY29uc3QgTGF5b3V0UG9pbnQq
IG9mZnNldEZyb21Sb290ID0gMCwgUmVuZGVyUmVnaW9uKiA9IDApIGNvbnN0OworICAgIGJvb2wg
aW50ZXJzZWN0c0RhbWFnZVJlY3QoY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJCb3VuZHMsIGNvbnN0
IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIsIGNv
bnN0IExheW91dFBvaW50KiBvZmZzZXRGcm9tUm9vdCA9IDAsIFJlbmRlclJlZ2lvbiogPSAwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGF5b3V0UmVjdCogY2FjaGVkQm91
bmRpbmdCb3ggPSAwKSBjb25zdDsKIAogICAgIGVudW0gQ2FsY3VsYXRlTGF5ZXJCb3VuZHNGbGFn
IHsKICAgICAgICAgSW5jbHVkZVNlbGZUcmFuc2Zvcm0gPSAxIDw8IDAsCkBAIC05MzMsNiArOTQ4
LDggQEAgcHJpdmF0ZToKIAogICAgIEludFNpemUgY2xhbXBTY3JvbGxPZmZzZXQoY29uc3QgSW50
U2l6ZSYpIGNvbnN0OwogCisgICAgUmVuZGVyTGF5ZXIqIGVuY2xvc2luZ1BhZ2luYXRpb25MYXll
ckluU3VidHJlZShjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyKSBjb25zdDsKKwogICAgIHZv
aWQgc2V0TmV4dFNpYmxpbmcoUmVuZGVyTGF5ZXIqIG5leHQpIHsgbV9uZXh0ID0gbmV4dDsgfQog
ICAgIHZvaWQgc2V0UHJldmlvdXNTaWJsaW5nKFJlbmRlckxheWVyKiBwcmV2KSB7IG1fcHJldmlv
dXMgPSBwcmV2OyB9CiAgICAgdm9pZCBzZXRQYXJlbnQoUmVuZGVyTGF5ZXIqIHBhcmVudCk7CkBA
IC05ODQsNyArMTAwMSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbGxlY3RGcmFnbWVudHMo
TGF5ZXJGcmFnbWVudHMmLCBjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJSZWdp
b24qLCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QsCiAgICAgICAgIENsaXBSZWN0c1R5cGUs
IE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5IGluT3ZlcmxheVNjcm9sbGJhclNpemVSZWxl
dmFuY3kgPSBJZ25vcmVPdmVybGF5U2Nyb2xsYmFyU2l6ZSwKLSAgICAgICAgU2hvdWxkUmVzcGVj
dE92ZXJmbG93Q2xpcCA9IFJlc3BlY3RPdmVyZmxvd0NsaXAsIGNvbnN0IExheW91dFBvaW50KiBv
ZmZzZXRGcm9tUm9vdCA9IDAsIGNvbnN0IExheW91dFJlY3QqIGxheWVyQm91bmRpbmdCb3ggPSAw
KTsKKyAgICAgICAgU2hvdWxkUmVzcGVjdE92ZXJmbG93Q2xpcCA9IFJlc3BlY3RPdmVyZmxvd0Ns
aXAsIGNvbnN0IExheW91dFBvaW50KiBvZmZzZXRGcm9tUm9vdCA9IDAsIGNvbnN0IExheW91dFJl
Y3QqIGxheWVyQm91bmRpbmdCb3ggPSAwLCBTaG91bGRBcHBseVJvb3RPZmZzZXRUb0ZyYWdtZW50
cyA9IElnbm9yZVJvb3RPZmZzZXRGb3JGcmFnbWVudHMpOwogICAgIHZvaWQgdXBkYXRlUGFpbnRp
bmdJbmZvRm9yRnJhZ21lbnRzKExheWVyRnJhZ21lbnRzJiwgY29uc3QgTGF5ZXJQYWludGluZ0lu
Zm8mLCBQYWludExheWVyRmxhZ3MsIGJvb2wgc2hvdWxkUGFpbnRDb250ZW50LCBjb25zdCBMYXlv
dXRQb2ludCogb2Zmc2V0RnJvbVJvb3QpOwogICAgIHZvaWQgcGFpbnRCYWNrZ3JvdW5kRm9yRnJh
Z21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0KiwgR3JhcGhpY3ND
b250ZXh0KiB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQsCiAgICAgICAgIGNvbnN0IExheW91dFJl
Y3QmIHRyYW5zcGFyZW5jeVBhaW50RGlydHlSZWN0LCBib29sIGhhdmVUcmFuc3BhcmVuY3ksIGNv
bnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBwYWlu
dGluZ1Jvb3RGb3JSZW5kZXJlcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNwcAkocmV2aXNpb24gMTY3
Njc2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1Ro
cmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Niw3ICsyNjYsNyBAQCBzdGF0aWMgYm9vbCBp
c1ZhbGlkQ29sdW1uU3Bhbm5lcihSZW5kZXJNCiAKIHZvaWQgUmVuZGVyTXVsdGlDb2x1bW5GbG93
VGhyZWFkOjpmbG93VGhyZWFkRGVzY2VuZGFudEluc2VydGVkKFJlbmRlck9iamVjdCogZGVzY2Vu
ZGFudCkKIHsKLSAgICBpZiAobV9iZWluZ0V2YWN1YXRlZCkKKyAgICBpZiAobV9iZWluZ0V2YWN1
YXRlZCB8fCBkZXNjZW5kYW50LT5pc0luRmxvd1JlbmRlckZsb3dUaHJlYWQoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIFJlbmRlck9iamVjdCogc3VidHJlZVJvb3QgPSBkZXNjZW5kYW50OwogICAg
IGZvciAoOyBkZXNjZW5kYW50OyBkZXNjZW5kYW50ID0gZGVzY2VuZGFudC0+bmV4dEluUHJlT3Jk
ZXIoc3VidHJlZVJvb3QpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcAkocmV2aXNpb24gMTY3Njc2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MjQsOCArMTkyNCwxMCBAQCB2
b2lkIFJlbmRlck9iamVjdDo6aW5zZXJ0ZWRJbnRvVHJlZSgpCiAKICAgICBpZiAoIWlzRmxvYXRp
bmcoKSAmJiBwYXJlbnQoKS0+Y2hpbGRyZW5JbmxpbmUoKSkKICAgICAgICAgcGFyZW50KCktPmRp
cnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKHRoaXMpOwotCi0gICAgaWYgKFJlbmRlckZsb3dUaHJl
YWQqIGZsb3dUaHJlYWQgPSBwYXJlbnQoKS0+Zmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpKQor
ICAgIAorICAgIGlmIChwYXJlbnQoKS0+aXNSZW5kZXJGbG93VGhyZWFkKCkpCisgICAgICAgIHRv
UmVuZGVyRmxvd1RocmVhZChwYXJlbnQoKSktPmZsb3dUaHJlYWREZXNjZW5kYW50SW5zZXJ0ZWQo
dGhpcyk7CisgICAgZWxzZSBpZiAoUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IHBhcmVu
dCgpLT5mbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCkpCiAgICAgICAgIGZsb3dUaHJlYWQtPmZs
b3dUaHJlYWREZXNjZW5kYW50SW5zZXJ0ZWQodGhpcyk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229945</attachid>
            <date>2014-04-22 19:28:28 -0700</date>
            <delta_ts>2014-04-23 09:43:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>23215</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE0LTA0LTIyICBEYXZpZCBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBbTmV3IE11bHRpY29sdW1uXSBOZXN0
ZWQgY29sdW1ucyBub3Qgd29ya2luZyBhdCBhbGwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE4MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgbmVzdGVkIHBhZ2luYXRpb24g
Y29udGV4dHMsIGFsbG93aW5nIGZvciBhbiBhcmJpdHJhcnkgbGV2ZWwKKyAgICAgICAgb2YgbmVz
dGluZyBvZiBtdWx0aWNvbHVtbiBsYXlvdXRzLiBUaGVyZSB3ZXJlIGEgbnVtYmVyIG9mIHRoaW5n
cyB0aGF0IGhhZCB0bworICAgICAgICBiZSBwYXRjaGVkIGluIG9yZGVyIGZvciB0aGlzIHRvIHdv
cmsuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OnJlZ2lvbkF0QmxvY2tPZmZzZXQpOgorICAgICAgICBNYWtlIHN1
cmUgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkcyBqdXN0IHJldHVybiBudWxsIGZvciByZWdp
b25zIGF0IGFueQorICAgICAgICBibG9jayBvZmZzZXQuIEluZGl2aWR1YWwgcmVnaW9uIHNldHMg
d2lsbCBiZSBjcmVhdGVkIGFzIHlvdSBjcm9zcyBhbmNlc3RvcgorICAgICAgICByZWdpb25zIGV2
ZW50dWFsbHksIHNvIHRoaXMgaXMganVzdCBnZXR0aW5nIGluIHRoZSB3YXkuCisKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OmVuY2xvc2luZ1BhZ2luYXRpb25MYXllckluU3VidHJlZSk6CisgICAgICAgIEFkZCBhIG5l
dyBoZWxwZXIgbWV0aG9kIGZvciBvYnRhaW5pbmcgYW4gZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVy
IHdoZW4KKyAgICAgICAgY29uc3RyYWluZWQgYnkgc29tZSByb290LiBUaGlzIGZ1bmN0aW9uIGVu
c3VyZXMgeW91IGRvbid0IGFjY2lkZW50YWxseQorICAgICAgICBjcm9zcyB5b3VyIHN1YnRyZWUg
cm9vdCB3aGVuIGxvb2tpbmcgZm9yIGVuY2xvc2luZyBwYWdpbmF0aW9uIGxheWVycy4KKworICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNvbGxlY3RGcmFnbWVudHMpOgorICAgICAgICBQ
YXRjaCBjb2xsZWN0RnJhZ21lbnRzIHRvIGtub3cgaG93IHRvIHJlY3VyIHRvIGNvbGxlY3QgYW5j
ZXN0b3IgZnJhZ21lbnRzCisgICAgICAgIGluIG9yZGVyIHRvIGFwcGx5IG5lc3RlZCBzcGxpdHRp
bmcgYXMgeW91IGNyb3NzIHBhZ2luYXRpb24gYm91bmRhcmllcy4KKworICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZVBhaW50aW5nSW5mb0ZvckZyYWdtZW50cyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y2FsY3VsYXRlQ2xpcFJlY3RzKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyRnJhZ21lbnQ6
OkxheWVyRnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJGcmFnbWVudDo6c2V0UmVj
dHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJGcmFnbWVudDo6bW92ZUJ5KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyRnJhZ21lbnQ6OmludGVyc2VjdCk6CisgICAgICAgIEltcHJvdmUgdGhl
IExheWVyRnJhZ21lbnQgc28gdGhhdCBpdCBjYWNoZXMgdHJhbnNmb3JtZWQgYm91bmRpbmcgYm94
ZXMgYXMKKyAgICAgICAgd2VsbC4gVGhpcyBpcyBuZWVkZWQgdG8gZml4IGludGVyc2VjdHNEYW1h
Z2VSZWN0IHNvIHRoYXQgaXQgZG9lc24ndCBncmFiCisgICAgICAgIHRoZSB3cm9uZyBib3VuZGlu
ZyBib3ggd2hlbiBjaGVja2luZyBpbmxpbmUgbGF5ZXJzIHRoYXQgYXJlIHBhZ2luYXRlZC4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkOjpmbG93VGhyZWFkRGVz
Y2VuZGFudEluc2VydGVkKToKKyAgICAgICAgSWdub3JlIGluc2VydGVkIGZsb3cgdGhyZWFkcyBp
bnNpZGUgYW4gYW5jZXN0b3IgZmxvdyB0aHJlYWQsIHNpbmNlIHdlIG9ubHkKKyAgICAgICAgY2Fy
ZSBhYm91dCB3aGF0IHRoZSBzZXRzIGRvLgorICAgICAgICAKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aW5zZXJ0
ZWRJbnRvVHJlZSk6CisgICAgICAgIE1ha2Ugc3VyZSB0aGF0IG5lc3RlZCBmbG93IHRocmVhZCBs
YXllcnMgcmV0dXJuIHRoZW1zZWx2ZXMgd2hlbiBhIGNoaWxkCisgICAgICAgIGlzIGluc2VydGVk
IGRpcmVjdGx5IHVuZGVyIHRoZW0uCisKIDIwMTQtMDQtMjIgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogc2Nyb2xsZXJJ
bXAgPT0gc2Nyb2xsYmFyUGFpbnRlckZvclNjcm9sbGJhcihfc2Nyb2xsYmFyKSBvbiB0d28gQVBJ
IHRlc3RzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJl
dmlzaW9uIDE2NzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4MjgsNiArNDgyOCw5IEBAIExheW91dFVuaXQgUmVuZGVy
QmxvY2s6Om9mZnNldEZyb21Mb2dpY2EKIAogUmVuZGVyUmVnaW9uKiBSZW5kZXJCbG9jazo6cmVn
aW9uQXRCbG9ja09mZnNldChMYXlvdXRVbml0IGJsb2NrT2Zmc2V0KSBjb25zdAogeworICAgIGlm
IChpc0luRmxvd1JlbmRlckZsb3dUaHJlYWQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICBS
ZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygp
OwogICAgIGlmICghZmxvd1RocmVhZCB8fCAhZmxvd1RocmVhZC0+aGFzVmFsaWRSZWdpb25JbmZv
KCkpCiAgICAgICAgIHJldHVybiAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAxNjc2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjQwLDExICs0MjQwLDM1IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGlzdChWZWN0b3I8UmVuZGUKICAgICB9CiB9CiAKK1Jl
bmRlckxheWVyKiBSZW5kZXJMYXllcjo6ZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVySW5TdWJ0cmVl
KGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIpIGNvbnN0Cit7CisgICAgLy8gSWYgd2UgZG9u
J3QgaGF2ZSBhbiBlbmNsb3NpbmcgbGF5ZXIsIG9yIGlmIHRoZSByb290IGxheWVyIGlzIHRoZSBz
YW1lIGFzIHRoZSBlbmNsb3NpbmcgbGF5ZXIsCisgICAgLy8gdGhlbiBqdXN0IHJldHVybiB0aGUg
ZW5jbG9zaW5nIHBhZ2luYXRpb24gbGF5ZXIgKGl0IHdpbGwgYmUgMCBpbiB0aGUgZm9ybWVyIGNh
c2UgYW5kIHRoZSByb290TGF5ZXIgaW4gdGhlIGxhdHRlciBjYXNlKS4KKyAgICBpZiAoIW1fZW5j
bG9zaW5nUGFnaW5hdGlvbkxheWVyIHx8IHJvb3RMYXllciA9PSBtX2VuY2xvc2luZ1BhZ2luYXRp
b25MYXllcikKKyAgICAgICAgcmV0dXJuIG1fZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVyOworICAg
IAorICAgIC8vIFdhbGsgdXAgdGhlIGxheWVyIHRyZWUgYW5kIHNlZSB3aGljaCBsYXllciB3ZSBo
aXQgZmlyc3QuIElmIGl0J3MgdGhlIHJvb3QsIHRoZW4gdGhlIGVuY2xvc2luZyBwYWdpbmF0aW9u
CisgICAgLy8gbGF5ZXIgaXNuJ3QgaW4gb3VyIHN1YnRyZWUgYW5kIHdlIHJldHVybiAwLiBJZiB3
ZSBoaXQgdGhlIGVuY2xvc2luZyBwYWdpbmF0aW9uIGxheWVyIGZpcnN0LCB0aGVuCisgICAgLy8g
d2UgY2FuIHJldHVybiBpdC4KKyAgICBmb3IgKGNvbnN0IFJlbmRlckxheWVyKiBsYXllciA9IHRo
aXM7IGxheWVyOyBsYXllciA9IGxheWVyLT5wYXJlbnQoKSkgeworICAgICAgICBpZiAobGF5ZXIg
PT0gcm9vdExheWVyKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmIChsYXllciA9
PSBtX2VuY2xvc2luZ1BhZ2luYXRpb25MYXllcikKKyAgICAgICAgICAgIHJldHVybiBtX2VuY2xv
c2luZ1BhZ2luYXRpb25MYXllcjsKKyAgICB9CisgICAgCisgICAgLy8gVGhpcyBzaG91bGQgbmV2
ZXIgYmUgcmVhY2hlZCwgc2luY2UgYW4gZW5jbG9zaW5nIGxheWVyIHNob3VsZCBhbHdheXMgZWl0
aGVyIGJlIHRoZSByb290TGF5ZXIgb3IgYmUKKyAgICAvLyBvdXIgZW5jbG9zaW5nIHBhZ2luYXRp
b24gbGF5ZXIuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisK
IHZvaWQgUmVuZGVyTGF5ZXI6OmNvbGxlY3RGcmFnbWVudHMoTGF5ZXJGcmFnbWVudHMmIGZyYWdt
ZW50cywgY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyUmVnaW9uKiByZWdpb24s
IGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCwKICAgICBDbGlwUmVjdHNUeXBlIGNsaXBSZWN0
c1R5cGUsIE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5IGluT3ZlcmxheVNjcm9sbGJhclNp
emVSZWxldmFuY3ksIFNob3VsZFJlc3BlY3RPdmVyZmxvd0NsaXAgcmVzcGVjdE92ZXJmbG93Q2xp
cCwgY29uc3QgTGF5b3V0UG9pbnQqIG9mZnNldEZyb21Sb290LAotICAgIGNvbnN0IExheW91dFJl
Y3QqIGxheWVyQm91bmRpbmdCb3gpCisgICAgY29uc3QgTGF5b3V0UmVjdCogbGF5ZXJCb3VuZGlu
Z0JveCwgU2hvdWxkQXBwbHlSb290T2Zmc2V0VG9GcmFnbWVudHMgYXBwbHlSb290T2Zmc2V0VG9G
cmFnbWVudHMpCiB7Ci0gICAgaWYgKCFlbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXIoKSB8fCBoYXNU
cmFuc2Zvcm0oKSkgeworICAgIFJlbmRlckxheWVyKiBwYWdpbmF0aW9uTGF5ZXIgPSBlbmNsb3Np
bmdQYWdpbmF0aW9uTGF5ZXJJblN1YnRyZWUocm9vdExheWVyKTsKKyAgICBpZiAoIXBhZ2luYXRp
b25MYXllciB8fCBoYXNUcmFuc2Zvcm0oKSkgewogICAgICAgICAvLyBGb3IgdW5wYWdpbmF0ZWQg
bGF5ZXJzLCB0aGVyZSBpcyBvbmx5IG9uZSBmcmFnbWVudC4KICAgICAgICAgTGF5ZXJGcmFnbWVu
dCBmcmFnbWVudDsKICAgICAgICAgQ2xpcFJlY3RzQ29udGV4dCBjbGlwUmVjdHNDb250ZXh0KHJv
b3RMYXllciwgcmVnaW9uLCBjbGlwUmVjdHNUeXBlLCBpbk92ZXJsYXlTY3JvbGxiYXJTaXplUmVs
ZXZhbmN5LCByZXNwZWN0T3ZlcmZsb3dDbGlwKTsKQEAgLTQyNTUsMTEgKzQyNzksMTEgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6Y29sbGVjdEZyYWdtZW50cyhMYXllcgogICAgIAogICAgIC8vIENvbXB1
dGUgb3VyIG9mZnNldCB3aXRoaW4gdGhlIGVuY2xvc2luZyBwYWdpbmF0aW9uIGxheWVyLgogICAg
IExheW91dFBvaW50IG9mZnNldFdpdGhpblBhZ2luYXRlZExheWVyOwotICAgIGNvbnZlcnRUb0xh
eWVyQ29vcmRzKGVuY2xvc2luZ1BhZ2luYXRpb25MYXllcigpLCBvZmZzZXRXaXRoaW5QYWdpbmF0
ZWRMYXllcik7CisgICAgY29udmVydFRvTGF5ZXJDb29yZHMocGFnaW5hdGlvbkxheWVyLCBvZmZz
ZXRXaXRoaW5QYWdpbmF0ZWRMYXllcik7CiAgICAgCiAgICAgLy8gQ2FsY3VsYXRlIGNsaXAgcmVj
dHMgcmVsYXRpdmUgdG8gdGhlIGVuY2xvc2luZ1BhZ2luYXRpb25MYXllci4gVGhlIHB1cnBvc2Ug
b2YgdGhpcyBjYWxsIGlzIHRvIGRldGVybWluZSBvdXIgYm91bmRzIGNsaXBwZWQgdG8gaW50ZXJt
ZWRpYXRlCiAgICAgLy8gbGF5ZXJzIGJldHdlZW4gdXMgYW5kIHRoZSBwYWdpbmF0aW9uIGNvbnRl
eHQuIEl0J3MgaW1wb3J0YW50IHRvIG1pbmltaXplIHRoZSBudW1iZXIgb2YgZnJhZ21lbnRzIHdl
IG5lZWQgdG8gY3JlYXRlIGFuZCB0aGlzIGhlbHBzIHdpdGggdGhhdC4KLSAgICBDbGlwUmVjdHND
b250ZXh0IHBhZ2luYXRpb25DbGlwUmVjdHNDb250ZXh0KGVuY2xvc2luZ1BhZ2luYXRpb25MYXll
cigpLCByZWdpb24sIGNsaXBSZWN0c1R5cGUsIGluT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFu
Y3ksIHJlc3BlY3RPdmVyZmxvd0NsaXApOworICAgIENsaXBSZWN0c0NvbnRleHQgcGFnaW5hdGlv
bkNsaXBSZWN0c0NvbnRleHQocGFnaW5hdGlvbkxheWVyLCByZWdpb24sIGNsaXBSZWN0c1R5cGUs
IGluT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3ksIHJlc3BlY3RPdmVyZmxvd0NsaXApOwog
ICAgIExheW91dFJlY3QgbGF5ZXJCb3VuZHNJbkZsb3dUaHJlYWQ7CiAgICAgQ2xpcFJlY3QgYmFj
a2dyb3VuZFJlY3RJbkZsb3dUaHJlYWQ7CiAgICAgQ2xpcFJlY3QgZm9yZWdyb3VuZFJlY3RJbkZs
b3dUaHJlYWQ7CkBAIC00MjY4LDkgKzQyOTIsNjggQEAgdm9pZCBSZW5kZXJMYXllcjo6Y29sbGVj
dEZyYWdtZW50cyhMYXllcgogICAgICAgICBvdXRsaW5lUmVjdEluRmxvd1RocmVhZCwgJm9mZnNl
dFdpdGhpblBhZ2luYXRlZExheWVyKTsKICAgICAKICAgICAvLyBUYWtlIG91ciBib3VuZGluZyBi
b3ggd2l0aGluIHRoZSBmbG93IHRocmVhZCBhbmQgY2xpcCBpdC4KLSAgICBMYXlvdXRSZWN0IGxh
eWVyQm91bmRpbmdCb3hJbkZsb3dUaHJlYWQgPSBsYXllckJvdW5kaW5nQm94ID8gKmxheWVyQm91
bmRpbmdCb3ggOiBib3VuZGluZ0JveChlbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXIoKSwgMCwgJm9m
ZnNldFdpdGhpblBhZ2luYXRlZExheWVyKTsKKyAgICBMYXlvdXRSZWN0IGxheWVyQm91bmRpbmdC
b3hJbkZsb3dUaHJlYWQgPSBsYXllckJvdW5kaW5nQm94ID8gKmxheWVyQm91bmRpbmdCb3ggOiBi
b3VuZGluZ0JveChwYWdpbmF0aW9uTGF5ZXIsIDAsICZvZmZzZXRXaXRoaW5QYWdpbmF0ZWRMYXll
cik7CiAgICAgbGF5ZXJCb3VuZGluZ0JveEluRmxvd1RocmVhZC5pbnRlcnNlY3QoYmFja2dyb3Vu
ZFJlY3RJbkZsb3dUaHJlYWQucmVjdCgpKTsKKyAgICAKKyAgICBSZW5kZXJGbG93VGhyZWFkJiBl
bmNsb3NpbmdGbG93VGhyZWFkID0gdG9SZW5kZXJGbG93VGhyZWFkKHBhZ2luYXRpb25MYXllci0+
cmVuZGVyZXIoKSk7CisgICAgUmVuZGVyTGF5ZXIqIHBhcmVudFBhZ2luYXRpb25MYXllciA9IHBh
Z2luYXRpb25MYXllci0+cGFyZW50KCktPmVuY2xvc2luZ1BhZ2luYXRpb25MYXllckluU3VidHJl
ZShyb290TGF5ZXIpOworICAgIExheWVyRnJhZ21lbnRzIGFuY2VzdG9yRnJhZ21lbnRzOworICAg
IGlmIChwYXJlbnRQYWdpbmF0aW9uTGF5ZXIpIHsKKyAgICAgICAgLy8gQ29tcHV0ZSBhIGJvdW5k
aW5nIGJveCBhY2NvdW50aW5nIGZvciBmcmFnbWVudHMuCisgICAgICAgIExheW91dFJlY3QgbGF5
ZXJGcmFnbWVudEJvdW5kaW5nQm94SW5QYXJlbnRQYWdpbmF0aW9uTGF5ZXIgPSBlbmNsb3NpbmdG
bG93VGhyZWFkLmZyYWdtZW50c0JvdW5kaW5nQm94KGxheWVyQm91bmRpbmdCb3hJbkZsb3dUaHJl
YWQpOworICAgICAgICAKKyAgICAgICAgLy8gQ29udmVydCB0byBiZSBpbiB0aGUgYW5jZXN0b3Ig
cGFnaW5hdGlvbiBjb250ZXh0J3MgY29vcmRpbmF0ZSBzcGFjZS4KKyAgICAgICAgTGF5b3V0UG9p
bnQgb2Zmc2V0V2l0aGluUGFyZW50UGFnaW5hdGVkTGF5ZXI7CisgICAgICAgIHBhZ2luYXRpb25M
YXllci0+Y29udmVydFRvTGF5ZXJDb29yZHMocGFyZW50UGFnaW5hdGlvbkxheWVyLCBvZmZzZXRX
aXRoaW5QYXJlbnRQYWdpbmF0ZWRMYXllcik7CisgICAgICAgIGxheWVyRnJhZ21lbnRCb3VuZGlu
Z0JveEluUGFyZW50UGFnaW5hdGlvbkxheWVyLm1vdmVCeShvZmZzZXRXaXRoaW5QYXJlbnRQYWdp
bmF0ZWRMYXllcik7CisgICAgICAgIAorICAgICAgICAvLyBOb3cgY29sbGVjdCBhbmNlc3RvciBm
cmFnbWVudHMuCisgICAgICAgIHBhcmVudFBhZ2luYXRpb25MYXllci0+Y29sbGVjdEZyYWdtZW50
cyhhbmNlc3RvckZyYWdtZW50cywgcm9vdExheWVyLCByZWdpb24sIGRpcnR5UmVjdCwgY2xpcFJl
Y3RzVHlwZSwgaW5PdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSwgcmVzcGVjdE92ZXJmbG93
Q2xpcCwgbnVsbHB0ciwgJmxheWVyRnJhZ21lbnRCb3VuZGluZ0JveEluUGFyZW50UGFnaW5hdGlv
bkxheWVyLCBBcHBseVJvb3RPZmZzZXRUb0ZyYWdtZW50cyk7CisgICAgICAgIAorICAgICAgICBp
ZiAoYW5jZXN0b3JGcmFnbWVudHMuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAKKyAgICAgICAgZm9yIChhdXRvJiBhbmNlc3RvckZyYWdtZW50IDogYW5jZXN0b3JGcmFn
bWVudHMpIHsKKyAgICAgICAgICAgIC8vIFNoaWZ0IHRoZSBkaXJ0eSByZWN0IGludG8gZmxvdyB0
aHJlYWQgY29vcmRpbmF0ZXMuCisgICAgICAgICAgICBMYXlvdXRSZWN0IGRpcnR5UmVjdEluRmxv
d1RocmVhZChkaXJ0eVJlY3QpOworICAgICAgICAgICAgZGlydHlSZWN0SW5GbG93VGhyZWFkLm1v
dmVCeSgtb2Zmc2V0V2l0aGluUGFyZW50UGFnaW5hdGVkTGF5ZXIgKyAtYW5jZXN0b3JGcmFnbWVu
dC5wYWdpbmF0aW9uT2Zmc2V0KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgc2l6ZV90IG9s
ZFNpemUgPSBmcmFnbWVudHMuc2l6ZSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBU
ZWxsIHRoZSBmbG93IHRocmVhZCB0byBjb2xsZWN0IHRoZSBmcmFnbWVudHMuIFdlIHBhc3MgZW5v
dWdoIGluZm9ybWF0aW9uIHRvIGNyZWF0ZSBhIG1pbmltYWwgbnVtYmVyIG9mIGZyYWdtZW50cyBi
YXNlZCBvZmYgdGhlIHBhZ2VzL2NvbHVtbnMKKyAgICAgICAgICAgIC8vIHRoYXQgaW50ZXJzZWN0
IHRoZSBhY3R1YWwgZGlydHlSZWN0IGFzIHdlbGwgYXMgdGhlIHBhZ2VzL2NvbHVtbnMgdGhhdCBp
bnRlcnNlY3Qgb3VyIGxheWVyJ3MgYm91bmRpbmcgYm94LgorICAgICAgICAgICAgZW5jbG9zaW5n
Rmxvd1RocmVhZC5jb2xsZWN0TGF5ZXJGcmFnbWVudHMoZnJhZ21lbnRzLCBsYXllckJvdW5kaW5n
Qm94SW5GbG93VGhyZWFkLCBkaXJ0eVJlY3RJbkZsb3dUaHJlYWQpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICBzaXplX3QgbmV3U2l6ZSA9IGZyYWdtZW50cy5zaXplKCk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGlmIChvbGRTaXplID09IG5ld1NpemUpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CiAKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBvbGRTaXplOyBpIDwgbmV3
U2l6ZTsgKytpKSB7CisgICAgICAgICAgICAgICAgTGF5ZXJGcmFnbWVudCYgZnJhZ21lbnQgPSBm
cmFnbWVudHMuYXQoaSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gU2V0
IG91ciBmb3VyIHJlY3RzIHdpdGggYWxsIGNsaXBwaW5nIGFwcGxpZWQgdGhhdCB3YXMgaW50ZXJu
YWwgdG8gdGhlIGZsb3cgdGhyZWFkLgorICAgICAgICAgICAgICAgIGZyYWdtZW50LnNldFJlY3Rz
KGxheWVyQm91bmRzSW5GbG93VGhyZWFkLCBiYWNrZ3JvdW5kUmVjdEluRmxvd1RocmVhZCwgZm9y
ZWdyb3VuZFJlY3RJbkZsb3dUaHJlYWQsIG91dGxpbmVSZWN0SW5GbG93VGhyZWFkLCAmbGF5ZXJC
b3VuZGluZ0JveEluRmxvd1RocmVhZCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgLy8gU2hpZnQgdG8gdGhlIHJvb3QtcmVsYXRpdmUgcGh5c2ljYWwgcG9zaXRpb24gdXNlZCB3
aGVuIHBhaW50aW5nIHRoZSBmbG93IHRocmVhZCBpbiB0aGlzIGZyYWdtZW50LgorICAgICAgICAg
ICAgICAgIGZyYWdtZW50Lm1vdmVCeShhbmNlc3RvckZyYWdtZW50LnBhZ2luYXRpb25PZmZzZXQg
KyBmcmFnbWVudC5wYWdpbmF0aW9uT2Zmc2V0ICsgb2Zmc2V0V2l0aGluUGFyZW50UGFnaW5hdGVk
TGF5ZXIpOworCisgICAgICAgICAgICAgICAgLy8gSW50ZXJzZWN0IHRoZSBmcmFnbWVudCB3aXRo
IG91ciBhbmNlc3RvcidzIGJhY2tncm91bmQgY2xpcCBzbyB0aGF0IGUuZy4sIGNvbHVtbnMgaW4g
YW4gb3ZlcmZsb3c6aGlkZGVuIGJsb2NrIGFyZQorICAgICAgICAgICAgICAgIC8vIHByb3Blcmx5
IGNsaXBwZWQgYnkgdGhlIG92ZXJmbG93LgorICAgICAgICAgICAgICAgIGZyYWdtZW50LmludGVy
c2VjdChhbmNlc3RvckZyYWdtZW50LnBhZ2luYXRpb25DbGlwKTsKKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICAvLyBOb3cgaW50ZXJzZWN0IHdpdGggb3VyIHBhZ2luYXRpb24gY2xp
cC4gVGhpcyB3aWxsIHR5cGljYWxseSBtZWFuIHdlJ3JlIGp1c3QgaW50ZXJzZWN0aW5nIHRoZSBk
aXJ0eSByZWN0IHdpdGggdGhlIGNvbHVtbgorICAgICAgICAgICAgICAgIC8vIGNsaXAsIHNvIHRo
ZSBjb2x1bW4gY2xpcCBlbmRzIHVwIGJlaW5nIGFsbCB3ZSBhcHBseS4KKyAgICAgICAgICAgICAg
ICBmcmFnbWVudC5pbnRlcnNlY3QoZnJhZ21lbnQucGFnaW5hdGlvbkNsaXApOworICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChhcHBseVJvb3RPZmZzZXRUb0ZyYWdtZW50cyA9
PSBBcHBseVJvb3RPZmZzZXRUb0ZyYWdtZW50cykKKyAgICAgICAgICAgICAgICAgICAgZnJhZ21l
bnQucGFnaW5hdGlvbk9mZnNldCA9IGZyYWdtZW50LnBhZ2luYXRpb25PZmZzZXQgKyBvZmZzZXRX
aXRoaW5QYXJlbnRQYWdpbmF0ZWRMYXllcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICAvLyBTaGlmdCB0aGUgZGly
dHkgcmVjdCBpbnRvIGZsb3cgdGhyZWFkIGNvb3JkaW5hdGVzLgogICAgIExheW91dFBvaW50IG9m
ZnNldE9mUGFnaW5hdGlvbkxheWVyRnJvbVJvb3Q7CiAgICAgZW5jbG9zaW5nUGFnaW5hdGlvbkxh
eWVyKCktPmNvbnZlcnRUb0xheWVyQ29vcmRzKHJvb3RMYXllciwgb2Zmc2V0T2ZQYWdpbmF0aW9u
TGF5ZXJGcm9tUm9vdCk7CkBAIC00Mjc5LDcgKzQzNjIsNiBAQCB2b2lkIFJlbmRlckxheWVyOjpj
b2xsZWN0RnJhZ21lbnRzKExheWVyCiAKICAgICAvLyBUZWxsIHRoZSBmbG93IHRocmVhZCB0byBj
b2xsZWN0IHRoZSBmcmFnbWVudHMuIFdlIHBhc3MgZW5vdWdoIGluZm9ybWF0aW9uIHRvIGNyZWF0
ZSBhIG1pbmltYWwgbnVtYmVyIG9mIGZyYWdtZW50cyBiYXNlZCBvZmYgdGhlIHBhZ2VzL2NvbHVt
bnMKICAgICAvLyB0aGF0IGludGVyc2VjdCB0aGUgYWN0dWFsIGRpcnR5UmVjdCBhcyB3ZWxsIGFz
IHRoZSBwYWdlcy9jb2x1bW5zIHRoYXQgaW50ZXJzZWN0IG91ciBsYXllcidzIGJvdW5kaW5nIGJv
eC4KLSAgICBSZW5kZXJGbG93VGhyZWFkJiBlbmNsb3NpbmdGbG93VGhyZWFkID0gdG9SZW5kZXJG
bG93VGhyZWFkKGVuY2xvc2luZ1BhZ2luYXRpb25MYXllcigpLT5yZW5kZXJlcigpKTsKICAgICBl
bmNsb3NpbmdGbG93VGhyZWFkLmNvbGxlY3RMYXllckZyYWdtZW50cyhmcmFnbWVudHMsIGxheWVy
Qm91bmRpbmdCb3hJbkZsb3dUaHJlYWQsIGRpcnR5UmVjdEluRmxvd1RocmVhZCk7CiAgICAgCiAg
ICAgaWYgKGZyYWdtZW50cy5pc0VtcHR5KCkpCkBAIC00Mjg3LDkgKzQzNjksOSBAQCB2b2lkIFJl
bmRlckxheWVyOjpjb2xsZWN0RnJhZ21lbnRzKExheWVyCiAgICAgCiAgICAgLy8gR2V0IHRoZSBw
YXJlbnQgY2xpcCByZWN0cyBvZiB0aGUgcGFnaW5hdGlvbiBsYXllciwgc2luY2Ugd2UgbmVlZCB0
byBpbnRlcnNlY3Qgd2l0aCB0aGF0IHdoZW4gcGFpbnRpbmcgY29sdW1uIGNvbnRlbnRzLgogICAg
IENsaXBSZWN0IGFuY2VzdG9yQ2xpcFJlY3QgPSBkaXJ0eVJlY3Q7Ci0gICAgaWYgKGVuY2xvc2lu
Z1BhZ2luYXRpb25MYXllcigpLT5wYXJlbnQoKSkgeworICAgIGlmIChwYWdpbmF0aW9uTGF5ZXIt
PnBhcmVudCgpKSB7CiAgICAgICAgIENsaXBSZWN0c0NvbnRleHQgY2xpcFJlY3RzQ29udGV4dChy
b290TGF5ZXIsIHJlZ2lvbiwgY2xpcFJlY3RzVHlwZSwgaW5PdmVybGF5U2Nyb2xsYmFyU2l6ZVJl
bGV2YW5jeSwgcmVzcGVjdE92ZXJmbG93Q2xpcCk7Ci0gICAgICAgIGFuY2VzdG9yQ2xpcFJlY3Qg
PSBlbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXIoKS0+YmFja2dyb3VuZENsaXBSZWN0KGNsaXBSZWN0
c0NvbnRleHQpOworICAgICAgICBhbmNlc3RvckNsaXBSZWN0ID0gcGFnaW5hdGlvbkxheWVyLT5i
YWNrZ3JvdW5kQ2xpcFJlY3QoY2xpcFJlY3RzQ29udGV4dCk7CiAgICAgICAgIGFuY2VzdG9yQ2xp
cFJlY3QuaW50ZXJzZWN0KGRpcnR5UmVjdCk7CiAgICAgfQogCkBAIC00Mjk3LDcgKzQzNzksNyBA
QCB2b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0RnJhZ21lbnRzKExheWVyCiAgICAgICAgIExheWVy
RnJhZ21lbnQmIGZyYWdtZW50ID0gZnJhZ21lbnRzLmF0KGkpOwogICAgICAgICAKICAgICAgICAg
Ly8gU2V0IG91ciBmb3VyIHJlY3RzIHdpdGggYWxsIGNsaXBwaW5nIGFwcGxpZWQgdGhhdCB3YXMg
aW50ZXJuYWwgdG8gdGhlIGZsb3cgdGhyZWFkLgotICAgICAgICBmcmFnbWVudC5zZXRSZWN0cyhs
YXllckJvdW5kc0luRmxvd1RocmVhZCwgYmFja2dyb3VuZFJlY3RJbkZsb3dUaHJlYWQsIGZvcmVn
cm91bmRSZWN0SW5GbG93VGhyZWFkLCBvdXRsaW5lUmVjdEluRmxvd1RocmVhZCk7CisgICAgICAg
IGZyYWdtZW50LnNldFJlY3RzKGxheWVyQm91bmRzSW5GbG93VGhyZWFkLCBiYWNrZ3JvdW5kUmVj
dEluRmxvd1RocmVhZCwgZm9yZWdyb3VuZFJlY3RJbkZsb3dUaHJlYWQsIG91dGxpbmVSZWN0SW5G
bG93VGhyZWFkLCAmbGF5ZXJCb3VuZGluZ0JveEluRmxvd1RocmVhZCk7CiAgICAgICAgIAogICAg
ICAgICAvLyBTaGlmdCB0byB0aGUgcm9vdC1yZWxhdGl2ZSBwaHlzaWNhbCBwb3NpdGlvbiB1c2Vk
IHdoZW4gcGFpbnRpbmcgdGhlIGZsb3cgdGhyZWFkIGluIHRoaXMgZnJhZ21lbnQuCiAgICAgICAg
IGZyYWdtZW50Lm1vdmVCeShmcmFnbWVudC5wYWdpbmF0aW9uT2Zmc2V0ICsgb2Zmc2V0T2ZQYWdp
bmF0aW9uTGF5ZXJGcm9tUm9vdCk7CkBAIC00MzA5LDYgKzQzOTEsOSBAQCB2b2lkIFJlbmRlckxh
eWVyOjpjb2xsZWN0RnJhZ21lbnRzKExheWVyCiAgICAgICAgIC8vIE5vdyBpbnRlcnNlY3Qgd2l0
aCBvdXIgcGFnaW5hdGlvbiBjbGlwLiBUaGlzIHdpbGwgdHlwaWNhbGx5IG1lYW4gd2UncmUganVz
dCBpbnRlcnNlY3RpbmcgdGhlIGRpcnR5IHJlY3Qgd2l0aCB0aGUgY29sdW1uCiAgICAgICAgIC8v
IGNsaXAsIHNvIHRoZSBjb2x1bW4gY2xpcCBlbmRzIHVwIGJlaW5nIGFsbCB3ZSBhcHBseS4KICAg
ICAgICAgZnJhZ21lbnQuaW50ZXJzZWN0KGZyYWdtZW50LnBhZ2luYXRpb25DbGlwKTsKKyAgICAg
ICAgCisgICAgICAgIGlmIChhcHBseVJvb3RPZmZzZXRUb0ZyYWdtZW50cyA9PSBBcHBseVJvb3RP
ZmZzZXRUb0ZyYWdtZW50cykKKyAgICAgICAgICAgIGZyYWdtZW50LnBhZ2luYXRpb25PZmZzZXQg
PSBmcmFnbWVudC5wYWdpbmF0aW9uT2Zmc2V0ICsgb2Zmc2V0T2ZQYWdpbmF0aW9uTGF5ZXJGcm9t
Um9vdDsKICAgICB9CiB9CiAKQEAgLTQzMjEsNyArNDQwNiw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6
OnVwZGF0ZVBhaW50aW5nSW5mb0ZvckYKICAgICAgICAgZnJhZ21lbnQuc2hvdWxkUGFpbnRDb250
ZW50ID0gc2hvdWxkUGFpbnRDb250ZW50OwogICAgICAgICBpZiAodGhpcyAhPSBsb2NhbFBhaW50
aW5nSW5mby5yb290TGF5ZXIgfHwgIShsb2NhbFBhaW50RmxhZ3MgJiBQYWludExheWVyUGFpbnRp
bmdPdmVyZmxvd0NvbnRlbnRzKSkgewogICAgICAgICAgICAgTGF5b3V0UG9pbnQgbmV3T2Zmc2V0
RnJvbVJvb3QgPSAqb2Zmc2V0RnJvbVJvb3QgKyBmcmFnbWVudC5wYWdpbmF0aW9uT2Zmc2V0Owot
ICAgICAgICAgICAgZnJhZ21lbnQuc2hvdWxkUGFpbnRDb250ZW50ICY9IGludGVyc2VjdHNEYW1h
Z2VSZWN0KGZyYWdtZW50LmxheWVyQm91bmRzLCBmcmFnbWVudC5iYWNrZ3JvdW5kUmVjdC5yZWN0
KCksIGxvY2FsUGFpbnRpbmdJbmZvLnJvb3RMYXllciwgJm5ld09mZnNldEZyb21Sb290LCBsb2Nh
bFBhaW50aW5nSW5mby5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCk7CisgICAgICAgICAgICBmcmFn
bWVudC5zaG91bGRQYWludENvbnRlbnQgJj0gaW50ZXJzZWN0c0RhbWFnZVJlY3QoZnJhZ21lbnQu
bGF5ZXJCb3VuZHMsIGZyYWdtZW50LmJhY2tncm91bmRSZWN0LnJlY3QoKSwgbG9jYWxQYWludGlu
Z0luZm8ucm9vdExheWVyLCAmbmV3T2Zmc2V0RnJvbVJvb3QsIGxvY2FsUGFpbnRpbmdJbmZvLnJl
bmRlck5hbWVkRmxvd0ZyYWdtZW50LCBmcmFnbWVudC5oYXNCb3VuZGluZ0JveCA/ICZmcmFnbWVu
dC5ib3VuZGluZ0JveCA6IDApOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNTY1MCw3ICs1NzM1
LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cmVwYWludEJsb2NrU2VsZWN0aW9uRwogICAgICAgICBy
ZW5kZXJlcigpLnJlcGFpbnRSZWN0YW5nbGUocmVjdCk7CiB9CiAKLWJvb2wgUmVuZGVyTGF5ZXI6
OmludGVyc2VjdHNEYW1hZ2VSZWN0KGNvbnN0IExheW91dFJlY3QmIGxheWVyQm91bmRzLCBjb25z
dCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBj
b25zdCBMYXlvdXRQb2ludCogb2Zmc2V0RnJvbVJvb3QsIFJlbmRlclJlZ2lvbiogcmVnaW9uKSBj
b25zdAorYm9vbCBSZW5kZXJMYXllcjo6aW50ZXJzZWN0c0RhbWFnZVJlY3QoY29uc3QgTGF5b3V0
UmVjdCYgbGF5ZXJCb3VuZHMsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIGNvbnN0IFJl
bmRlckxheWVyKiByb290TGF5ZXIsIGNvbnN0IExheW91dFBvaW50KiBvZmZzZXRGcm9tUm9vdCwg
UmVuZGVyUmVnaW9uKiByZWdpb24sIGNvbnN0IExheW91dFJlY3QqIGNhY2hlZEJvdW5kaW5nQm94
KSBjb25zdAogewogICAgIC8vIEFsd2F5cyBleGFtaW5lIHRoZSBjYW52YXMgYW5kIHRoZSByb290
LgogICAgIC8vIEZJWE1FOiBDb3VsZCBlbGltaW5hdGUgdGhlIGlzUm9vdCgpIGNoZWNrIGlmIHdl
IGZpeCBiYWNrZ3JvdW5kIHBhaW50aW5nIHNvIHRoYXQgdGhlIFJlbmRlclZpZXcKQEAgLTU2Nzgs
OSArNTc2MywxMyBAQCBib29sIFJlbmRlckxheWVyOjppbnRlcnNlY3RzRGFtYWdlUmVjdChjCiAg
ICAgICAgIGlmIChiLmludGVyc2VjdHMoZGFtYWdlUmVjdCkpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9Ci0KKyAgICAKICAgICAvLyBPdGhlcndpc2Ugd2UgbmVlZCB0byBjb21wdXRl
IHRoZSBib3VuZGluZyBib3ggb2YgdGhpcyBzaW5nbGUgbGF5ZXIgYW5kIHNlZSBpZiBpdCBpbnRl
cnNlY3RzCi0gICAgLy8gdGhlIGRhbWFnZSByZWN0LgorICAgIC8vIHRoZSBkYW1hZ2UgcmVjdC4g
SXQncyBwb3NzaWJsZSB0aGUgZnJhZ21lbnQgY29tcHV0ZWQgdGhlIGJvdW5kaW5nIGJveCBhbHJl
YWR5LCBpbiB3aGljaCBjYXNlIHdlCisgICAgLy8gY2FuIHVzZSB0aGUgY2FjaGVkIHZhbHVlLgor
ICAgIGlmIChjYWNoZWRCb3VuZGluZ0JveCkKKyAgICAgICAgcmV0dXJuIGNhY2hlZEJvdW5kaW5n
Qm94LT5pbnRlcnNlY3RzKGRhbWFnZVJlY3QpOworICAgIAogICAgIHJldHVybiBib3VuZGluZ0Jv
eChyb290TGF5ZXIsIDAsIG9mZnNldEZyb21Sb290KS5pbnRlcnNlY3RzKGRhbWFnZVJlY3QpOwog
fQogCkBAIC01NzM0LDI2ICs1ODIzLDMyIEBAIExheW91dFJlY3QgUmVuZGVyTGF5ZXI6OmJvdW5k
aW5nQm94KGNvbnMKICAgICAgICAgcmVuZGVyQm94KCktPmZsaXBGb3JXcml0aW5nTW9kZShyZXN1
bHQpOwogICAgIGVsc2UKICAgICAgICAgcmVuZGVyZXIoKS5jb250YWluaW5nQmxvY2soKS0+Zmxp
cEZvcldyaXRpbmdNb2RlKHJlc3VsdCk7Ci0KLSAgICBpZiAoZW5jbG9zaW5nUGFnaW5hdGlvbkxh
eWVyKCkgJiYgKGZsYWdzICYgVXNlRnJhZ21lbnRCb3hlcykpIHsKKyAgICAKKyAgICBjb25zdCBS
ZW5kZXJMYXllciogcGFnaW5hdGlvbkxheWVyID0gKGZsYWdzICYgVXNlRnJhZ21lbnRCb3hlcykg
PyBlbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXJJblN1YnRyZWUoYW5jZXN0b3JMYXllcikgOiAwOwor
ICAgIGNvbnN0IFJlbmRlckxheWVyKiBjaGlsZExheWVyID0gdGhpczsKKyAgICBib29sIGlzUGFn
aW5hdGVkID0gcGFnaW5hdGlvbkxheWVyOworICAgIAorICAgIHdoaWxlIChwYWdpbmF0aW9uTGF5
ZXIpIHsKICAgICAgICAgLy8gU3BsaXQgb3VyIGJveCB1cCBpbnRvIHRoZSBhY3R1YWwgZnJhZ21l
bnQgYm94ZXMgdGhhdCByZW5kZXIgaW4gdGhlIGNvbHVtbnMvcGFnZXMgYW5kIHVuaXRlIHRob3Nl
IHRvZ2V0aGVyIHRvCiAgICAgICAgIC8vIGdldCBvdXIgdHJ1ZSBib3VuZGluZyBib3guCiAgICAg
ICAgIExheW91dFBvaW50IG9mZnNldFdpdGhpblBhZ2luYXRpb25MYXllcjsKLSAgICAgICAgY29u
dmVydFRvTGF5ZXJDb29yZHMoZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVyKCksIG9mZnNldFdpdGhp
blBhZ2luYXRpb25MYXllcik7ICAgICAgICAKKyAgICAgICAgY2hpbGRMYXllci0+Y29udmVydFRv
TGF5ZXJDb29yZHMocGFnaW5hdGlvbkxheWVyLCBvZmZzZXRXaXRoaW5QYWdpbmF0aW9uTGF5ZXIp
OwogICAgICAgICByZXN1bHQubW92ZUJ5KG9mZnNldFdpdGhpblBhZ2luYXRpb25MYXllcik7CiAK
LSAgICAgICAgUmVuZGVyRmxvd1RocmVhZCYgZW5jbG9zaW5nRmxvd1RocmVhZCA9IHRvUmVuZGVy
Rmxvd1RocmVhZChlbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXIoKS0+cmVuZGVyZXIoKSk7CisgICAg
ICAgIFJlbmRlckZsb3dUaHJlYWQmIGVuY2xvc2luZ0Zsb3dUaHJlYWQgPSB0b1JlbmRlckZsb3dU
aHJlYWQocGFnaW5hdGlvbkxheWVyLT5yZW5kZXJlcigpKTsKICAgICAgICAgcmVzdWx0ID0gZW5j
bG9zaW5nRmxvd1RocmVhZC5mcmFnbWVudHNCb3VuZGluZ0JveChyZXN1bHQpOwogICAgICAgICAK
KyAgICAgICAgY2hpbGRMYXllciA9IHBhZ2luYXRpb25MYXllcjsKKyAgICAgICAgcGFnaW5hdGlv
bkxheWVyID0gcGFnaW5hdGlvbkxheWVyLT5wYXJlbnQoKS0+ZW5jbG9zaW5nUGFnaW5hdGlvbkxh
eWVySW5TdWJ0cmVlKGFuY2VzdG9yTGF5ZXIpOworICAgIH0KKworICAgIGlmIChpc1BhZ2luYXRl
ZCkgewogICAgICAgICBMYXlvdXRQb2ludCBkZWx0YTsKLSAgICAgICAgaWYgKG9mZnNldEZyb21S
b290KQotICAgICAgICAgICAgZGVsdGEgPSAqb2Zmc2V0RnJvbVJvb3Q7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGVuY2xvc2luZ1BhZ2luYXRpb25MYXllcigpLT5jb252ZXJ0VG9MYXllckNv
b3JkcyhhbmNlc3RvckxheWVyLCBkZWx0YSk7CisgICAgICAgIGNoaWxkTGF5ZXItPmNvbnZlcnRU
b0xheWVyQ29vcmRzKGFuY2VzdG9yTGF5ZXIsIGRlbHRhKTsKICAgICAgICAgcmVzdWx0Lm1vdmVC
eShkZWx0YSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotCisgICAgCiAgICAgTGF5
b3V0UG9pbnQgZGVsdGE7CiAgICAgaWYgKG9mZnNldEZyb21Sb290KQogICAgICAgICBkZWx0YSA9
ICpvZmZzZXRGcm9tUm9vdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5oCShyZXZpc2lvbiAxNjc2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjM2LDYgKzIzNiwxMSBAQCBlbnVtIFNob3VsZFJl
c3BlY3RPdmVyZmxvd0NsaXAgewogICAgIFJlc3BlY3RPdmVyZmxvd0NsaXAKIH07CiAKK2VudW0g
U2hvdWxkQXBwbHlSb290T2Zmc2V0VG9GcmFnbWVudHMgeworICAgIEFwcGx5Um9vdE9mZnNldFRv
RnJhZ21lbnRzLAorICAgIElnbm9yZVJvb3RPZmZzZXRGb3JGcmFnbWVudHMKK307CisKIHN0cnVj
dCBDbGlwUmVjdHNDYWNoZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CkBAIC0yNzMsMTQgKzI3OCwxOSBAQCBzdHJ1Y3QgTGF5ZXJGcmFnbWVudCB7CiBwdWJsaWM6CiAg
ICAgTGF5ZXJGcmFnbWVudCgpCiAgICAgICAgIDogc2hvdWxkUGFpbnRDb250ZW50KGZhbHNlKQor
ICAgICAgICAsIGhhc0JvdW5kaW5nQm94KGZhbHNlKQogICAgIHsgfQogCi0gICAgdm9pZCBzZXRS
ZWN0cyhjb25zdCBMYXlvdXRSZWN0JiBib3VuZHMsIGNvbnN0IENsaXBSZWN0JiBiYWNrZ3JvdW5k
LCBjb25zdCBDbGlwUmVjdCYgZm9yZWdyb3VuZCwgY29uc3QgQ2xpcFJlY3QmIG91dGxpbmUpCisg
ICAgdm9pZCBzZXRSZWN0cyhjb25zdCBMYXlvdXRSZWN0JiBib3VuZHMsIGNvbnN0IENsaXBSZWN0
JiBiYWNrZ3JvdW5kLCBjb25zdCBDbGlwUmVjdCYgZm9yZWdyb3VuZCwgY29uc3QgQ2xpcFJlY3Qm
IG91dGxpbmUsIGNvbnN0IExheW91dFJlY3QqIGJib3gpCiAgICAgewogICAgICAgICBsYXllckJv
dW5kcyA9IGJvdW5kczsKICAgICAgICAgYmFja2dyb3VuZFJlY3QgPSBiYWNrZ3JvdW5kOwogICAg
ICAgICBmb3JlZ3JvdW5kUmVjdCA9IGZvcmVncm91bmQ7CiAgICAgICAgIG91dGxpbmVSZWN0ID0g
b3V0bGluZTsKKyAgICAgICAgaWYgKGJib3gpIHsKKyAgICAgICAgICAgIGJvdW5kaW5nQm94ID0g
KmJib3g7CisgICAgICAgICAgICBoYXNCb3VuZGluZ0JveCA9IHRydWU7CisgICAgICAgIH0KICAg
ICB9CiAgICAgCiAgICAgdm9pZCBtb3ZlQnkoY29uc3QgTGF5b3V0UG9pbnQmIG9mZnNldCkKQEAg
LTI5MCw2ICszMDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGZvcmVncm91bmRSZWN0Lm1vdmVCeShv
ZmZzZXQpOwogICAgICAgICBvdXRsaW5lUmVjdC5tb3ZlQnkob2Zmc2V0KTsKICAgICAgICAgcGFn
aW5hdGlvbkNsaXAubW92ZUJ5KG9mZnNldCk7CisgICAgICAgIGJvdW5kaW5nQm94Lm1vdmVCeShv
ZmZzZXQpOwogICAgIH0KICAgICAKICAgICB2b2lkIGludGVyc2VjdChjb25zdCBMYXlvdXRSZWN0
JiByZWN0KQpAQCAtMjk3LDEzICszMDgsMTYgQEAgcHVibGljOgogICAgICAgICBiYWNrZ3JvdW5k
UmVjdC5pbnRlcnNlY3QocmVjdCk7CiAgICAgICAgIGZvcmVncm91bmRSZWN0LmludGVyc2VjdChy
ZWN0KTsKICAgICAgICAgb3V0bGluZVJlY3QuaW50ZXJzZWN0KHJlY3QpOworICAgICAgICBib3Vu
ZGluZ0JveC5pbnRlcnNlY3QocmVjdCk7CiAgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxkUGFp
bnRDb250ZW50OworICAgIGJvb2wgaGFzQm91bmRpbmdCb3g7CiAgICAgTGF5b3V0UmVjdCBsYXll
ckJvdW5kczsKICAgICBDbGlwUmVjdCBiYWNrZ3JvdW5kUmVjdDsKICAgICBDbGlwUmVjdCBmb3Jl
Z3JvdW5kUmVjdDsKICAgICBDbGlwUmVjdCBvdXRsaW5lUmVjdDsKKyAgICBMYXlvdXRSZWN0IGJv
dW5kaW5nQm94OwogICAgIAogICAgIC8vIFVuaXF1ZSB0byBwYWdpbmF0ZWQgZnJhZ21lbnRzLiBU
aGUgcGh5c2ljYWwgdHJhbnNsYXRpb24gdG8gYXBwbHkgdG8gc2hpZnQgdGhlIGxheWVyIHdoZW4g
cGFpbnRpbmcvaGl0LXRlc3RpbmcuCiAgICAgTGF5b3V0UG9pbnQgcGFnaW5hdGlvbk9mZnNldDsK
QEAgLTY5Niw3ICs3MTAsNyBAQCBwdWJsaWM6CiAgICAgTGF5b3V0UmVjdCBsb2NhbENsaXBSZWN0
KGJvb2wmIGNsaXBFeGNlZWRzQm91bmRzKSBjb25zdDsgLy8gUmV0dXJucyB0aGUgYmFja2dyb3Vu
ZCBjbGlwIHJlY3Qgb2YgdGhlIGxheWVyIGluIHRoZSBsb2NhbCBjb29yZGluYXRlIHNwYWNlLgog
CiAgICAgLy8gUGFzcyBvZmZzZXRGcm9tUm9vdCBpZiBrbm93bi4KLSAgICBib29sIGludGVyc2Vj
dHNEYW1hZ2VSZWN0KGNvbnN0IExheW91dFJlY3QmIGxheWVyQm91bmRzLCBjb25zdCBMYXlvdXRS
ZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBjb25zdCBMYXlv
dXRQb2ludCogb2Zmc2V0RnJvbVJvb3QgPSAwLCBSZW5kZXJSZWdpb24qID0gMCkgY29uc3Q7Cisg
ICAgYm9vbCBpbnRlcnNlY3RzRGFtYWdlUmVjdChjb25zdCBMYXlvdXRSZWN0JiBsYXllckJvdW5k
cywgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RM
YXllciwgY29uc3QgTGF5b3V0UG9pbnQqIG9mZnNldEZyb21Sb290ID0gMCwgUmVuZGVyUmVnaW9u
KiA9IDAsIGNvbnN0IExheW91dFJlY3QqIGNhY2hlZEJvdW5kaW5nQm94ID0gMCkgY29uc3Q7CiAK
ICAgICBlbnVtIENhbGN1bGF0ZUxheWVyQm91bmRzRmxhZyB7CiAgICAgICAgIEluY2x1ZGVTZWxm
VHJhbnNmb3JtID0gMSA8PCAwLApAQCAtOTMzLDYgKzk0Nyw4IEBAIHByaXZhdGU6CiAKICAgICBJ
bnRTaXplIGNsYW1wU2Nyb2xsT2Zmc2V0KGNvbnN0IEludFNpemUmKSBjb25zdDsKIAorICAgIFJl
bmRlckxheWVyKiBlbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXJJblN1YnRyZWUoY29uc3QgUmVuZGVy
TGF5ZXIqIHJvb3RMYXllcikgY29uc3Q7CisKICAgICB2b2lkIHNldE5leHRTaWJsaW5nKFJlbmRl
ckxheWVyKiBuZXh0KSB7IG1fbmV4dCA9IG5leHQ7IH0KICAgICB2b2lkIHNldFByZXZpb3VzU2li
bGluZyhSZW5kZXJMYXllciogcHJldikgeyBtX3ByZXZpb3VzID0gcHJldjsgfQogICAgIHZvaWQg
c2V0UGFyZW50KFJlbmRlckxheWVyKiBwYXJlbnQpOwpAQCAtOTg0LDcgKzEwMDAsNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBjb2xsZWN0RnJhZ21lbnRzKExheWVyRnJhZ21lbnRzJiwgY29uc3Qg
UmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyUmVnaW9uKiwgY29uc3QgTGF5b3V0UmVjdCYg
ZGlydHlSZWN0LAogICAgICAgICBDbGlwUmVjdHNUeXBlLCBPdmVybGF5U2Nyb2xsYmFyU2l6ZVJl
bGV2YW5jeSBpbk92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5ID0gSWdub3JlT3ZlcmxheVNj
cm9sbGJhclNpemUsCi0gICAgICAgIFNob3VsZFJlc3BlY3RPdmVyZmxvd0NsaXAgPSBSZXNwZWN0
T3ZlcmZsb3dDbGlwLCBjb25zdCBMYXlvdXRQb2ludCogb2Zmc2V0RnJvbVJvb3QgPSAwLCBjb25z
dCBMYXlvdXRSZWN0KiBsYXllckJvdW5kaW5nQm94ID0gMCk7CisgICAgICAgIFNob3VsZFJlc3Bl
Y3RPdmVyZmxvd0NsaXAgPSBSZXNwZWN0T3ZlcmZsb3dDbGlwLCBjb25zdCBMYXlvdXRQb2ludCog
b2Zmc2V0RnJvbVJvb3QgPSAwLCBjb25zdCBMYXlvdXRSZWN0KiBsYXllckJvdW5kaW5nQm94ID0g
MCwgU2hvdWxkQXBwbHlSb290T2Zmc2V0VG9GcmFnbWVudHMgPSBJZ25vcmVSb290T2Zmc2V0Rm9y
RnJhZ21lbnRzKTsKICAgICB2b2lkIHVwZGF0ZVBhaW50aW5nSW5mb0ZvckZyYWdtZW50cyhMYXll
ckZyYWdtZW50cyYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzLCBi
b29sIHNob3VsZFBhaW50Q29udGVudCwgY29uc3QgTGF5b3V0UG9pbnQqIG9mZnNldEZyb21Sb290
KTsKICAgICB2b2lkIHBhaW50QmFja2dyb3VuZEZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdt
ZW50cyYsIEdyYXBoaWNzQ29udGV4dCosIEdyYXBoaWNzQ29udGV4dCogdHJhbnNwYXJlbmN5TGF5
ZXJDb250ZXh0LAogICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiB0cmFuc3BhcmVuY3lQYWludERp
cnR5UmVjdCwgYm9vbCBoYXZlVHJhbnNwYXJlbmN5LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYs
IFBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVh
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRp
Q29sdW1uRmxvd1RocmVhZC5jcHAJKHJldmlzaW9uIDE2NzY5MykKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNjYsNyArMjY2LDcgQEAgc3RhdGljIGJvb2wgaXNWYWxpZENvbHVtblNwYW5uZXIoUmVu
ZGVyTQogCiB2b2lkIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZDo6Zmxvd1RocmVhZERlc2Nl
bmRhbnRJbnNlcnRlZChSZW5kZXJPYmplY3QqIGRlc2NlbmRhbnQpCiB7Ci0gICAgaWYgKG1fYmVp
bmdFdmFjdWF0ZWQpCisgICAgaWYgKG1fYmVpbmdFdmFjdWF0ZWQgfHwgZGVzY2VuZGFudC0+aXNJ
bkZsb3dSZW5kZXJGbG93VGhyZWFkKCkpCiAgICAgICAgIHJldHVybjsKICAgICBSZW5kZXJPYmpl
Y3QqIHN1YnRyZWVSb290ID0gZGVzY2VuZGFudDsKICAgICBmb3IgKDsgZGVzY2VuZGFudDsgZGVz
Y2VuZGFudCA9IGRlc2NlbmRhbnQtPm5leHRJblByZU9yZGVyKHN1YnRyZWVSb290KSkgewpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDE2
NzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTI0LDggKzE5MjQsMTAgQEAgdm9pZCBSZW5kZXJPYmplY3Q6Omluc2Vy
dGVkSW50b1RyZWUoKQogCiAgICAgaWYgKCFpc0Zsb2F0aW5nKCkgJiYgcGFyZW50KCktPmNoaWxk
cmVuSW5saW5lKCkpCiAgICAgICAgIHBhcmVudCgpLT5kaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGls
ZCh0aGlzKTsKLQotICAgIGlmIChSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gcGFyZW50
KCktPmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSkKKyAgICAKKyAgICBpZiAocGFyZW50KCkt
PmlzUmVuZGVyRmxvd1RocmVhZCgpKQorICAgICAgICB0b1JlbmRlckZsb3dUaHJlYWQocGFyZW50
KCkpLT5mbG93VGhyZWFkRGVzY2VuZGFudEluc2VydGVkKHRoaXMpOworICAgIGVsc2UgaWYgKFJl
bmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBwYXJlbnQoKS0+Zmxvd1RocmVhZENvbnRhaW5p
bmdCbG9jaygpKQogICAgICAgICBmbG93VGhyZWFkLT5mbG93VGhyZWFkRGVzY2VuZGFudEluc2Vy
dGVkKHRoaXMpOwogfQogCg==
</data>
<flag name="review"
          id="254307"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>