Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 128E1200B3C for ; Wed, 29 Jun 2016 04:15:11 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 111BB160A6C; Wed, 29 Jun 2016 02:15:11 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id D62D2160A56 for ; Wed, 29 Jun 2016 04:15:09 +0200 (CEST) Received: (qmail 58657 invoked by uid 500); 29 Jun 2016 02:15:08 -0000 Mailing-List: contact user-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@hbase.apache.org Delivered-To: mailing list user@hbase.apache.org Received: (qmail 58157 invoked by uid 99); 29 Jun 2016 02:15:07 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 29 Jun 2016 02:15:07 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 55570187B4F for ; Wed, 29 Jun 2016 02:15:07 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 4.999 X-Spam-Level: **** X-Spam-Status: No, score=4.999 tagged_above=-999 required=6.31 tests=[HTML_MESSAGE=2, RDNS_NONE=3, SPF_PASS=-0.001] autolearn=disabled Received: from mx2-lw-us.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id ri79ZG__KLPR for ; Wed, 29 Jun 2016 02:15:06 +0000 (UTC) Received: from mailfw.ifeng.com (unknown [210.51.19.198]) by mx2-lw-us.apache.org (ASF Mail Server at mx2-lw-us.apache.org) with ESMTP id 9267A5F485 for ; Wed, 29 Jun 2016 02:15:04 +0000 (UTC) X-AuditID: ac1ec874-f79136d00000071e-28-57732f2ca0d4 Received: from WebsenseProtector (Unknown_Domain [172.30.200.153]) by mailfw.ifeng.com (Microsoft Exchange 2010) with SMTP id 34.B6.01822.C2F23775; Wed, 29 Jun 2016 10:15:08 +0800 (HKT) Received: from wbsnpro (unknown [127.0.0.1]) by wbsnpro.localdomain (Service) with ESMTP id 47FE794704 for ; Wed, 29 Jun 2016 09:05:09 +0800 (CST) Received: from ex13-cas2.staff.ifeng.com (unknown [172.30.223.11]) by wbsnpro.localdomain (Service) with ESMTP id 27E9294702 for ; Wed, 29 Jun 2016 09:05:09 +0800 (CST) Received: from ex13-mb3.staff.ifeng.com (172.30.200.140) by ex13-mb7.staff.ifeng.com (172.30.223.26) with Microsoft SMTP Server (TLS) id 15.0.1156.6; Wed, 29 Jun 2016 10:13:57 +0800 Received: from ex13-mb3.staff.ifeng.com ([fe80::1488:ca85:ec26:7945]) by ex13-mb3.staff.ifeng.com ([fe80::1488:ca85:ec26:7945%17]) with mapi id 15.00.1156.000; Wed, 29 Jun 2016 10:13:57 +0800 From: =?gb2312?B?wt671A==?= To: "user@hbase.apache.org" Subject: question about SparkSQL loading hbase tables Thread-Topic: question about SparkSQL loading hbase tables Thread-Index: AdHRqMI6As0rw7FWQTqBqasw3ihOag== Date: Wed, 29 Jun 2016 02:13:56 +0000 Message-ID: <8cf91499f7ec44469f29e591b003732c@ex13-mb3.staff.ifeng.com> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [172.28.14.15] Content-Type: multipart/mixed; boundary="_004_8cf91499f7ec44469f29e591b003732cex13mb3staffifengcom_" MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA11UeUwUVxzO25ldhmWfDsOyPKagOMFbUKNNm2oIiU1qmloxJN1Eo3QWZg/Z nV1mZjmkf0BiDzHhsHZTl9pgQsViPdOq1NZjbVotFSExsaYHQSTUWntYm7Sobd/bmV0G//ve 9/2O7/d7b4ahuG47zwRkTVJkMSjY7PRHcy7vK1m2XHWviN2c/+yh7j1UOVg/0PU9XQE2Z631 iFp9ZcAnLy97Nct//Lt3QeTNdtA48uAx1QK+3AnaQCaD2NXoszsttI5daPjHY7Y2YGc49ixA E3uuUvrhCEDf3vuc1g+XAGp/MJahHwYAur/3ri2t9HV8k0GK2dhS9M6NVopgJ7sKTUz2WgnO YZ9GsZ63rDr/HPrhwu9GDI7vPJXMpdn5uPdIEkP2BfTr5GgyHrCFKHZr1EIwxeah/bG4VTfu RGMjgzYd56I74/8a/Ar0yQfnjOGK0MhgH67J4Fwvev3xMr18Nrqy7zbdCVxxU9X4dFTcFKWH BFHvG+1Ax0vQ+y0PLTqeh/buHsvQ8WJ0/e2EgZeigwfuUjouQR3nfzNwATp8sdum416ABq7U m+v0AEc/YENiIOhtKA14JdlXWh0OnQT6rWtnQP/DdQnAMkBwwEVQdXNWsV5tCiVALWMRcuHQ XEzN8oRrmvyi6q9SokFJFZzw7DXFzcE07YkGawUeDpXg4Jw0K0sNalDS8DMT5sBHO8JuLi+t qVE1EqgOhKNqVVQJJkAxNnzr+OFhwNNyWJZwiwxSDNaITTskJaw3ToCnGFrIg2Uv4e6sT9Sk WkmKSEpKbWAYAcGvSGK2IvmkRm8gqKVknFdeihXWrCSNF8LY6To35zILJu/z4M3XsHfeLD9p 38JkJgBi7LxTleQaSRGjGt4K/m6qVPzhJICPceCRVpP+UI2IIcwarnLgoUWYdaTYpKN8WEWG 4FKkyU0h/KcZu3GlpJlOvgZ1fB5cSZJZEuGPyukF8C44uyji5mabBNKNL4DsObzQXBM/3ZAv gtkkK9+kzuz5M6jGrycHVpDpHPi3Mj0cB5uIlSyDTM6GYCR5QQZnGq0A/kkeSa6hPNnFhx+k E1rJ9FDVRM28w1cI60ixxg5fJiSXImfscJO+Q0Oa2YlvAZkneJS5qQud2n51/Ebzhs0HxYXP PD9LKHuv1TH1YtntZjTs+u8Lnrp8dO4vP43ea5/yrAmF1zbLC6+P77zkGGzd9sfGygq05lhs QK70JLp2LYCrij+eiF9bWr27Y/39/PIp5tHWBZ/+/eHQZFv/rr8u9jV2nq/r2VK8bnvcvkWz eCvLBVr1iyuXUIoq/g+qZgWArgUAAA== archived-at: Wed, 29 Jun 2016 02:15:11 -0000 --_004_8cf91499f7ec44469f29e591b003732cex13mb3staffifengcom_ Content-Type: multipart/alternative; boundary="_000_8cf91499f7ec44469f29e591b003732cex13mb3staffifengcom_" --_000_8cf91499f7ec44469f29e591b003732cex13mb3staffifengcom_ Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 SGkgdGhlcmUNCiAgICAgSSBhbSB1c2luZyBTcGFya1NRTCB0byByZWFkIGZyb20gaGJhc2UsIGhv d2V2ZXINCg0KMS4gICAgICAgSSBmaW5kIHNvbWUgQVBJIG5vdCBhdmFpbGFibGUgaW4gbXkgZGVw ZW5kZW5jaWVzLiBXaGVyZSB0byBhZGQgdGhlbToNCg0Kb3JnLmFwYWNoZS5oYWRvb3AuaGJhc2Uu c3BhcmsuZXhhbXBsZS5oYmFzZWNvbnRleHQNCg0Kb3JnLmFwYWNoZS5zcGFyay5zcWwuZGF0YXNv dXJjZXMuaGJhc2UuSEJhc2VUYWJsZUNhdGFsb2cNCg0Kb3JnLmFwYWNoZS5oYWRvb3AuaGJhc2Uu c3BhcmsuZGF0YXNvdXJjZXMuSEJhc2VTcGFya0NvbmYNCg0KMi4gICAgICAgSXMgdGhlcmUgYSBj b21wbGV0ZSBleGFtcGxlIGNvZGUgYWJvdXQgaG93IHRvIHVzZSBTcGFya1NRTCByZWFkL3dyaXRl IGZyb20gaGJhc2U/DQoNClRoZSBkb2N1bWVudCBJIHJlZmVyZWQgaXMgdGhpczogaHR0cDovL2hi YXNlLmFwYWNoZS5vcmcvYm9vay5odG1sI19zcGFya3NxbF9kYXRhZnJhbWVzLiBJdCBzZWVtcyB0 aGF0IHRoaXMgaXMgYSBzbmFwc2hvdCBmb3IgMi4wLCB3aGlsZSBJIGFtIHVzaW5nIGhiYXNlIDEu Mi4xICsgc3BhcmsxLjYuMSArIGhhZG9vcDIuNy4xLg0KDQoNCg0KSW4gbXkgQXBwLCBJIHdhbnQg dG8gbG9hZCB0aGUgZW50aXJlIGhiYXNlIHRhYmxlIGludG8gc3BhcmtzcWwNCk15IGNvZGU6DQoN CmltcG9ydCBvcmcuYXBhY2hlLnNwYXJrLl8NCmltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5oYmFz ZS5fDQppbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AuaGJhc2UuSEJhc2VDb25maWd1cmF0aW9uDQpp bXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AuaGJhc2Uuc3BhcmsuZXhhbXBsZS5oYmFzZWNvbnRleHQN CmltcG9ydCBvcmcuYXBhY2hlLnNwYXJrLnNxbC5kYXRhc291cmNlcy5oYmFzZS5IQmFzZVRhYmxl Q2F0YWxvZw0KaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLmhiYXNlLnNwYXJrLmRhdGFzb3VyY2Vz LkhCYXNlU3BhcmtDb25mDQoNCm9iamVjdCBIYmFzZUNvbm5lY3RvciB7DQogIGRlZiBtYWluKGFy Z3M6IEFycmF5W1N0cmluZ10pIHsNCiAgICB2YWwgdGFibGVOYW1lID0gYXJncygwKQ0KICAgIHZh bCBzcGFya01hc3RlclVybERldiA9ICJzcGFyazovLyBoYWRvb3BtYXN0ZXI6NzA3NyINCiAgICB2 YWwgc3BhcmtNYXN0ZXJVcmxMb2NhbCA9ICJsb2NhbFsyXSINCg0KICAgIHZhbCBzcGFya0NvbmYg PSBuZXcgU3BhcmtDb25mKCkuc2V0QXBwTmFtZSgiSGJhc2VDb25uZWN0b3IgZm9yIHRhYmxlICIg KyB0YWJsZU5hbWUpLnNldE1hc3RlcihzcGFya01hc3RlclVybERldikuc2V0KCJzcGFyay5leGVj dXRvci5tZW1vcnkiLCAiMTBnIikNCiAgICB2YWwgc2MgPSBuZXcgU3BhcmtDb250ZXh0KHNwYXJr Q29uZikNCiAgICB2YWwgc3FsQ29udGV4dCA9IG5ldyBvcmcuYXBhY2hlLnNwYXJrLnNxbC5TUUxD b250ZXh0KHNjKQ0KICAgIHZhbCBjb25mID0gbmV3IEhCYXNlQ29uZmlndXJhdGlvbigpDQogICAg Y29uZi5zZXQoImhiYXNlLnpvb2tlZXBlci5xdW9ydW0iLCAiejEsejIsejMiKQ0KICAgIGNvbmYu c2V0KCJoYmFzZS56b29rZWVwZXIucHJvcGVydHkuY2xpZW50UG9ydCIsICIyMTgxIikNCiAgICBj b25mLnNldCgiaGJhc2Uucm9vdGRpciIsICJoZGZzOi8vaGFkb29wbWFzdGVyOjgwMjAvaGJhc2Ui KQ0KICAgIC8vICAgIHZhbCBoYmFzZUNvbnRleHQgPSBuZXcgSEJhc2VDb250ZXh0KHNjLCBjb25m KQ0KDQogICAgdmFsIHB2ID0gc3FsQ29udGV4dC5yZWFkLm9wdGlvbnMoTWFwKEhCYXNlVGFibGVD YXRhbG9nLnRhYmxlQ2F0YWxvZyAtPiB3cml0ZUNhdGFsb2csIEhCYXNlU3BhcmtDb25mLlRJTUVT VEFNUCAtPiB0c1NwZWNpZmllZC50b1N0cmluZykpDQogICAgICAuZm9ybWF0KCJvcmcuYXBhY2hl LmhhZG9vcC5oYmFzZS5zcGFyayIpDQogICAgICAubG9hZCgpDQogICAgcHYud3JpdGUuc2F2ZUFz VGFibGUodGFibGVOYW1lKQ0KDQogIH0NCg0KfQ0KDQpNeSBQT00gZmlsZSBpcyBhdHRhY2hlZCBh cyB3ZWxsLg0KDQpUaGFua3MgZm9yIGEgaGVscC4NCg0KU2FuLkx1bw0K --_000_8cf91499f7ec44469f29e591b003732cex13mb3staffifengcom_ Content-Type: text/html; charset="gb2312" Content-Transfer-Encoding: quoted-printable

Hi there

     I am u= sing SparkSQL to read from hbase, however

1= .   &= nbsp;   I find some API not ava= ilable in my dependencies. Where to add them:

= org.apache.hadoop.hbase.spark.example.hbasecontext

= org.apache.spark.sql.datasources.hbase.HBaseTableCatal= og

= org.apache.hadoop.hbase.spark.datasources.HBaseSparkCo= nf

2= .   &= nbsp;   Is there a complete exa= mple code about how to use SparkSQL read/write from hbase?

= The document I refered is this: http://h= base.apache.org/book.html#_sparksql_dataframes. It seems that this is a= snapshot for 2.0, while I am using hbase 1.2.1 + spark1.6.1 + hado= op2.7.1.

=  

= In my App, I want to load the entire hbase table into = sparksql

My code:

 

import org.apache.spark._<= /o:p>

import org.apache.hadoop.hbase.= _

import org.apache.hadoop.hbase.= HBaseConfiguration

import org.apache.hadoop.hbase.= spark.example.hbasecontext

import org.apache.spark.sql.dat= asources.hbase.HBaseTableCatalog

import org.apache.hadoop.hbase.= spark.datasources.HBaseSparkConf

 

object HbaseConnector {

  def main(args: Array[Str= ing]) {

    val tableNam= e =3D args(0)

    val sparkMas= terUrlDev =3D "spark:// hadoopmaster:7077"

    val sparkMas= terUrlLocal =3D "local[2]"

 

    val sparkCon= f =3D new SparkConf().setAppName("HbaseConnector for table " += ; tableName).setMaster(sparkMasterUrlDev).set("spark.executor.memory&q= uot;, "10g")

    val sc =3D n= ew SparkContext(sparkConf)

    val sqlConte= xt =3D new org.apache.spark.sql.SQLContext(sc)

    val conf =3D= new HBaseConfiguration()

    conf.set(&qu= ot;hbase.zookeeper.quorum", "z1,z2,z3")

    conf.set(&qu= ot;hbase.zookeeper.property.clientPort", "2181")<= /span>

    conf.set(&qu= ot;hbase.rootdir", "hdfs://hadoopmaster:8020/hbase")

    // &nbs= p;  val hbaseContext =3D new HBaseContext(sc, conf)<= /p>

 

    val pv =3D s= qlContext.read.options(Map(HBaseTableCatalog.tableCatalog -> writeCatalo= g, HBaseSparkConf.TIMESTAMP -> tsSpecified.toString))<= /p>

      = .format("org.apache.hadoop.hbase.spark")

      = .load()

    pv.write.sav= eAsTable(tableName)

 

  }

 

}

 

My POM file is attached as well= .

 

Thanks for a help.

 

San.Luo

--_000_8cf91499f7ec44469f29e591b003732cex13mb3staffifengcom_-- --_004_8cf91499f7ec44469f29e591b003732cex13mb3staffifengcom_ Content-Type: application/xml; name="pom.xml" Content-Description: pom.xml Content-Disposition: attachment; filename="pom.xml"; size=2745; creation-date="Wed, 29 Jun 2016 02:09:00 GMT"; modification-date="Wed, 29 Jun 2016 02:09:58 GMT" Content-Transfer-Encoding: base64 PHByb2plY3QgeG1sbnM9Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCIgeG1sbnM6 eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSINCgl4c2k6c2No ZW1hTG9jYXRpb249Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCBodHRwOi8vbWF2 ZW4uYXBhY2hlLm9yZy94c2QvbWF2ZW4tNC4wLjAueHNkIj4NCgk8bW9kZWxWZXJzaW9uPjQuMC4w PC9tb2RlbFZlcnNpb24+DQoJPGdyb3VwSWQ+Y29tLmFiYy53d3c8L2dyb3VwSWQ+DQoJPGFydGlm YWN0SWQ+YWJjPC9hcnRpZmFjdElkPg0KCTx2ZXJzaW9uPjEuMDwvdmVyc2lvbj4NCgk8YnVpbGQ+ DQoJCTxzb3VyY2VEaXJlY3Rvcnk+c3JjPC9zb3VyY2VEaXJlY3Rvcnk+DQoJCTxwbHVnaW5zPg0K CQkJPHBsdWdpbj4NCgkJCQk8YXJ0aWZhY3RJZD5tYXZlbi1jb21waWxlci1wbHVnaW48L2FydGlm YWN0SWQ+DQoJCQkJPHZlcnNpb24+My4xPC92ZXJzaW9uPg0KCQkJCTxjb25maWd1cmF0aW9uPg0K CQkJCQk8c291cmNlPjEuODwvc291cmNlPg0KCQkJCQk8dGFyZ2V0PjEuODwvdGFyZ2V0Pg0KCQkJ CTwvY29uZmlndXJhdGlvbj4NCgkJCTwvcGx1Z2luPg0KCQk8L3BsdWdpbnM+DQoJPC9idWlsZD4N Cgk8ZGVwZW5kZW5jaWVzPg0KCQk8ZGVwZW5kZW5jeT4NCgkJCTxncm91cElkPm9yZy5hcGFjaGUu c3Bhcms8L2dyb3VwSWQ+DQoJCQk8YXJ0aWZhY3RJZD5zcGFyay1jb3JlXzIuMTA8L2FydGlmYWN0 SWQ+DQoJCQk8dmVyc2lvbj4xLjYuMTwvdmVyc2lvbj4NCgkJPC9kZXBlbmRlbmN5Pg0KCQk8ZGVw ZW5kZW5jeT4NCgkJCTxncm91cElkPm9yZy5hcGFjaGUuaGFkb29wPC9ncm91cElkPg0KCQkJPGFy dGlmYWN0SWQ+aGFkb29wLWNsaWVudDwvYXJ0aWZhY3RJZD4NCgkJCTx2ZXJzaW9uPjIuNy4xPC92 ZXJzaW9uPg0KCQk8L2RlcGVuZGVuY3k+DQoJCTxkZXBlbmRlbmN5Pg0KCQkJPGdyb3VwSWQ+b3Jn LmFwYWNoZS5zcGFyazwvZ3JvdXBJZD4NCgkJCTxhcnRpZmFjdElkPnNwYXJrLXN0cmVhbWluZy1m bHVtZV8yLjEwPC9hcnRpZmFjdElkPg0KCQkJPHZlcnNpb24+MS42LjE8L3ZlcnNpb24+DQoJCTwv ZGVwZW5kZW5jeT4NCgkJPGRlcGVuZGVuY3k+DQoJCQk8Z3JvdXBJZD5vcmcuYXBhY2hlLnNwYXJr PC9ncm91cElkPg0KCQkJPGFydGlmYWN0SWQ+c3Bhcmstc3RyZWFtaW5nXzIuMTA8L2FydGlmYWN0 SWQ+DQoJCQk8dmVyc2lvbj4xLjYuMTwvdmVyc2lvbj4NCgkJPC9kZXBlbmRlbmN5Pg0KCQk8ZGVw ZW5kZW5jeT4NCgkJCTxncm91cElkPm9yZy5hcGFjaGUuc3Bhcms8L2dyb3VwSWQ+DQoJCQk8YXJ0 aWZhY3RJZD5zcGFyay1zcWxfMi4xMDwvYXJ0aWZhY3RJZD4NCgkJCTx2ZXJzaW9uPjEuNi4xPC92 ZXJzaW9uPg0KCQk8L2RlcGVuZGVuY3k+DQoJCTxkZXBlbmRlbmN5Pg0KCQkJPGdyb3VwSWQ+bXlz cWw8L2dyb3VwSWQ+DQoJCQk8YXJ0aWZhY3RJZD5teXNxbC1jb25uZWN0b3ItamF2YTwvYXJ0aWZh Y3RJZD4NCgkJCTx2ZXJzaW9uPjUuMS4zOTwvdmVyc2lvbj4NCgkJPC9kZXBlbmRlbmN5Pg0KCQk8 ZGVwZW5kZW5jeT4NCgkJCTxncm91cElkPm9yZy5hcGFjaGUuc3Bhcms8L2dyb3VwSWQ+DQoJCQk8 YXJ0aWZhY3RJZD5zcGFyay1oaXZlXzIuMTA8L2FydGlmYWN0SWQ+DQoJCQk8dmVyc2lvbj4xLjYu MTwvdmVyc2lvbj4NCgkJPC9kZXBlbmRlbmN5Pg0KCQk8ZGVwZW5kZW5jeT4NCgkJCTxncm91cElk Pm9yZy5hcGFjaGUuaGJhc2U8L2dyb3VwSWQ+DQoJCQk8YXJ0aWZhY3RJZD5oYmFzZS1jbGllbnQ8 L2FydGlmYWN0SWQ+DQoJCQk8dmVyc2lvbj4xLjIuMTwvdmVyc2lvbj4NCgkJPC9kZXBlbmRlbmN5 Pg0KCQk8ZGVwZW5kZW5jeT4NCgkJCTxncm91cElkPm9yZy5hcGFjaGUuaGJhc2U8L2dyb3VwSWQ+ DQoJCQk8YXJ0aWZhY3RJZD5oYmFzZTwvYXJ0aWZhY3RJZD4NCgkJCTx2ZXJzaW9uPjEuMi4xPC92 ZXJzaW9uPg0KCQkJPHR5cGU+cG9tPC90eXBlPg0KCQk8L2RlcGVuZGVuY3k+DQoJCTxkZXBlbmRl bmN5Pg0KCQkJPGdyb3VwSWQ+b3JnLmFwYWNoZS5oYmFzZTwvZ3JvdXBJZD4NCgkJCTxhcnRpZmFj dElkPmhiYXNlLWhhZG9vcDItY29tcGF0PC9hcnRpZmFjdElkPg0KCQkJPHZlcnNpb24+MS4yLjE8 L3ZlcnNpb24+DQoJCTwvZGVwZW5kZW5jeT4NCgkJPGRlcGVuZGVuY3k+DQoJCQk8Z3JvdXBJZD5v cmcuYXBhY2hlLmhiYXNlPC9ncm91cElkPg0KCQkJPGFydGlmYWN0SWQ+aGJhc2Utc2VydmVyPC9h cnRpZmFjdElkPg0KCQkJPHZlcnNpb24+MS4yLjE8L3ZlcnNpb24+DQoJCTwvZGVwZW5kZW5jeT4N CgkJPGRlcGVuZGVuY3k+DQoJCQk8Z3JvdXBJZD5vcmcuYXBhY2hlLmhiYXNlPC9ncm91cElkPg0K CQkJPGFydGlmYWN0SWQ+aGJhc2UtY29tbW9uPC9hcnRpZmFjdElkPg0KCQkJPHZlcnNpb24+MS4y LjE8L3ZlcnNpb24+DQoJCTwvZGVwZW5kZW5jeT4NCgkJPGRlcGVuZGVuY3k+DQoJCQk8Z3JvdXBJ ZD5vcmcuYXBhY2hlLmhiYXNlPC9ncm91cElkPg0KCQkJPGFydGlmYWN0SWQ+aGJhc2UtZXhhbXBs ZXM8L2FydGlmYWN0SWQ+DQoJCQk8dmVyc2lvbj4xLjIuMTwvdmVyc2lvbj4NCgkJPC9kZXBlbmRl bmN5Pg0KCQk8ZGVwZW5kZW5jeT4NCgkJCTxncm91cElkPm9yZy5hcGFjaGUuaGJhc2U8L2dyb3Vw SWQ+DQoJCQk8YXJ0aWZhY3RJZD5oYmFzZS1wcm90b2NvbDwvYXJ0aWZhY3RJZD4NCgkJCTx2ZXJz aW9uPjEuMi4xPC92ZXJzaW9uPg0KCQk8L2RlcGVuZGVuY3k+DQoJPC9kZXBlbmRlbmNpZXM+DQo8 L3Byb2plY3Q+ --_004_8cf91499f7ec44469f29e591b003732cex13mb3staffifengcom_--