Procházet zdrojové kódy

Merge branch 'develop'

abiao před 2 roky
rodič
revize
a537a6549c

+ 17 - 4
go/gopath/src/fohow.com/apps/helpers/promotion_helper.go

@@ -200,11 +200,14 @@ func SetOrderPromotionPro(orderId string, wxUid int64) {
 	if order == nil {
 		return
 	}
+
 	//检查会员是否首次下单
 	list := order_model.GetWxUserOrders(wxUid)
 	if len(list) == 1 {
 		firstOrder = true
 	}
+	var noInovceArr []int64
+	var promotionsArr []int64
 
 	queryDate := time.Now()
 	// 获取所有有效促销记录
@@ -212,10 +215,11 @@ func SetOrderPromotionPro(orderId string, wxUid int64) {
 	for _, item := range effectivePromotions {
 		//beego.Warn("item_name%d", item.Name)
 
+		noInvovedAmount := order_model.GetNotInvovedAmount(item.Id, order.OrderId)
 		firstFlag := true
 		totalFlag := true
 		numsFlag := true
-		if item.MaxTotal > 0 && order.TotalPrice > item.MaxTotal {
+		if item.MaxTotal > 0 && (order.TotalPrice-noInvovedAmount) > item.MaxTotal {
 			totalFlag = false
 			continue
 		}
@@ -223,11 +227,13 @@ func SetOrderPromotionPro(orderId string, wxUid int64) {
 			firstFlag = false
 			continue
 		}
-		if item.MinTotal > 0 && order.TotalPrice < item.MinTotal {
+
+		if item.MinTotal > 0 && (order.TotalPrice-noInvovedAmount) < item.MinTotal {
 			totalFlag = false
 			firstFlag = false
 			continue
 		}
+
 		nums := int64(999)
 		nums1 := int64(999)
 		nums2 := int64(999)
@@ -282,7 +288,7 @@ func SetOrderPromotionPro(orderId string, wxUid int64) {
 			}
 		}
 		if item.MinTotal > 0 {
-			nums4 = int64(order.TotalPrice / item.MinTotal)
+			nums4 = int64((order.TotalPrice - noInvovedAmount) / item.MinTotal)
 		}
 
 		if item.Prod4 > 0 {
@@ -331,9 +337,10 @@ func SetOrderPromotionPro(orderId string, wxUid int64) {
 			beego.Warn("totalFlag%v", totalFlag)
 			beego.Warn("numsFlag%v", numsFlag)
 			beego.Warn("nums%d", nums)*/
-
 		//满足促销条件
 		if firstFlag && totalFlag && numsFlag {
+			noInovceArr = append(noInovceArr, noInvovedAmount)
+			promotionsArr = append(promotionsArr, item.Id)
 
 			if item.SendProd1 > 0 && item.SendNums1 > 0 {
 				sendNums1 := nums * item.SendNums1
@@ -383,6 +390,12 @@ func SetOrderPromotionPro(orderId string, wxUid int64) {
 			}
 		}
 	}
+	//更新促销减去金额
+	if len(promotionsArr) > 0 {
+		promotions := tool.CombineInt64ToString(promotionsArr)
+		noinvoves := tool.CombineInt64ToString(noInovceArr)
+		go order_model.UpdateOrderPromotions(promotions, noinvoves, orderId)
+	}
 }
 
 func max(vals ...int64) int64 {

+ 99 - 49
go/gopath/src/fohow.com/apps/models/order_model/order.go

@@ -84,55 +84,57 @@ var ORDER_TYPE_CN_TEXT = map[int64]string{
 }
 
 type Order struct {
-	Id             int64              `orm:"column(id);pk"                                       json:"id"`       // int(11)
-	OrderId        string             `orm:"column(order_id)"                                    json:"order_id"` // varchar(255)
-	OrderType      int64              `orm:"column(order_type)"                                  json:"order_type"`
-	WxUserId       int64              `orm:"column(wx_user_id)"                                  json:"wx_user_id"`
-	UserId         int64              `orm:"column(user_id)"                                     json:"user_id"`          // int(11)
-	TotalPrice     int64              `orm:"column(total_price)"                                 json:"total_price"`      // int(11)
-	PaiedPrice     int64              `orm:"column(paied_price);null"                            json:"paied_price"`      // int(11)
-	CouponPrice    int64              `orm:"column(coupon_price);null"                           json:"coupon_price"`     // int(11)
-	CentPrice      int64              `orm:"column(cent_price);null"                             json:"cent_price"`       // int(11)
-	BuyPrice       int64              `orm:"column(buy_price);null"                              json:"-"`                // int(11)
-	Count          int64              `orm:"column(count);null"                                  json:"count"`            // int(11)
-	PaiedAt        int64              `orm:"column(paied_at);null"                               json:"paied_at"`         // int(11)
-	TradeNo        string             `orm:"column(trade_no);null"                               json:"trade_no"`         // varchar(255)
-	Status         string             `orm:"column(status);null"                                 json:"status"`           // varchar(255)
-	StatusCn       string             `orm:"-"                                                   json:"status_cn"`        // varchar(255)
-	PayWay         string             `orm:"column(pay_way);null"                                json:"pay_way"`          // varchar(255)
-	Source         string             `orm:"column(source);null"                                 json:"source"`           // varchar(255)
-	Tel            string             `orm:"column(tel);null"                                    json:"tel"`              // varchar(255)
-	Address        string             `orm:"column(address);null"                                json:"address"`          // varchar(255)
-	Contact        string             `orm:"column(contact);null"                                json:"contact"`          // varchar(255)
-	ExpressCompany string             `orm:"column(express_company);null"                        json:"express_company"`  // varchar(255)
-	ExpressOrderNo string             `orm:"column(express_order_no);null"                       json:"express_order_no"` // varchar(255)
-	Remark         string             `orm:"column(remark);null"                                 json:"remark"`           // varchar(255)
-	OrderRemark    string             `orm:"column(order_remark);null"                           json:"-"`                // varchar(255)
-	ExpressCode    string             `orm:"column(express_code);null"                           json:"express_code"`     // varchar(255)
-	Sign           string             `orm:"-"                                                   json:"sign"`             // varchar(255)
-	CTime          int64              `orm:"-"                                 json:"ctime"`                              // int(11)
-	DTime          int64              `orm:"-"                                 json:"dtime"`                              // int(11)
-	Freight        int64              `orm:"column(freight);null"                            json:"freight"`              // int(11)
-	Depart         int64              `orm:"column(depart)" json:"-"`                                                     // datetime
-	Pv             int64              `orm:"column(pv)"            json:"pv"`                                             // varchar(255)
-	PickWay        int64              `orm:"column(pick_way)"            json:"pick_way"`                                 // 物流方式
-	PickDept       int64              `orm:"column(pick_dept)"           json:"pick_dept"`                                // 自提部门
-	AddressId      int64              `orm:"column(address_id)"          json:"address_id"`                               // 地址ID
-	DispatchTime   time.Time          `orm:"column(dispatch_time);null;type(datetime)"           json:"dispatch_time"`
-	ReceiveTime    time.Time          `orm:"column(receive_time);null;type(datetime)"            json:"receive_time"`
-	PaiedTime      time.Time          `orm:"column(paied_time);null;type(datetime)"              json:"paied_time"` // int(11)
-	HasCommission  bool               `orm:"has_commission"                                      json:"-"`
-	CreatedAt      time.Time          `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"-"`            // datetime
-	UpdatedAt      time.Time          `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"-"`            // datetime
-	Promotions     string             `orm:"column(promotions);null"                           json:"-"`              // varchar(255)
-	SpecialPro     bool               `orm:"-"                                 json:"special_promotion"`              // int(11)
-	ShutWechat     bool               `orm:"-"                                 json:"shut_wechat"`                    // int(11)
-	PaiedSilver    int64              `orm:"column(paied_silver)"                                json:"paied_silver"` // int(11)
-	TotalSilver    int64              `orm:"column(total_silver)"                                json:"total_silver"` // int(11)
-	DisAmount      int64              `orm:"column(dis_amount)"                                  json:"dis_amount"`   // 折扣
-	PaiedCash      int64              `orm:"column(paied_cash);null"                      json:"paied_cash"`          // int(11)
-	WxUser         *user_model.WxUser `orm:"-"                                 json:"wx_user"`
-	ProductList    []*OrderDetail     `orm:"-"                                 json:"product_list"` // varchar(255)
+	Id                 int64              `orm:"column(id);pk"                                       json:"id"`       // int(11)
+	OrderId            string             `orm:"column(order_id)"                                    json:"order_id"` // varchar(255)
+	OrderType          int64              `orm:"column(order_type)"                                  json:"order_type"`
+	WxUserId           int64              `orm:"column(wx_user_id)"                                  json:"wx_user_id"`
+	UserId             int64              `orm:"column(user_id)"                                     json:"user_id"`          // int(11)
+	TotalPrice         int64              `orm:"column(total_price)"                                 json:"total_price"`      // int(11)
+	PaiedPrice         int64              `orm:"column(paied_price);null"                            json:"paied_price"`      // int(11)
+	CouponPrice        int64              `orm:"column(coupon_price);null"                           json:"coupon_price"`     // int(11)
+	CentPrice          int64              `orm:"column(cent_price);null"                             json:"cent_price"`       // int(11)
+	BuyPrice           int64              `orm:"column(buy_price);null"                              json:"-"`                // int(11)
+	Count              int64              `orm:"column(count);null"                                  json:"count"`            // int(11)
+	PaiedAt            int64              `orm:"column(paied_at);null"                               json:"paied_at"`         // int(11)
+	TradeNo            string             `orm:"column(trade_no);null"                               json:"trade_no"`         // varchar(255)
+	Status             string             `orm:"column(status);null"                                 json:"status"`           // varchar(255)
+	StatusCn           string             `orm:"-"                                                   json:"status_cn"`        // varchar(255)
+	PayWay             string             `orm:"column(pay_way);null"                                json:"pay_way"`          // varchar(255)
+	Source             string             `orm:"column(source);null"                                 json:"source"`           // varchar(255)
+	Tel                string             `orm:"column(tel);null"                                    json:"tel"`              // varchar(255)
+	Address            string             `orm:"column(address);null"                                json:"address"`          // varchar(255)
+	Contact            string             `orm:"column(contact);null"                                json:"contact"`          // varchar(255)
+	ExpressCompany     string             `orm:"column(express_company);null"                        json:"express_company"`  // varchar(255)
+	ExpressOrderNo     string             `orm:"column(express_order_no);null"                       json:"express_order_no"` // varchar(255)
+	Remark             string             `orm:"column(remark);null"                                 json:"remark"`           // varchar(255)
+	OrderRemark        string             `orm:"column(order_remark);null"                           json:"-"`                // varchar(255)
+	ExpressCode        string             `orm:"column(express_code);null"                           json:"express_code"`     // varchar(255)
+	Sign               string             `orm:"-"                                                   json:"sign"`             // varchar(255)
+	CTime              int64              `orm:"-"                                 json:"ctime"`                              // int(11)
+	DTime              int64              `orm:"-"                                 json:"dtime"`                              // int(11)
+	Freight            int64              `orm:"column(freight);null"                            json:"freight"`              // int(11)
+	Depart             int64              `orm:"column(depart)" json:"-"`                                                     // datetime
+	Pv                 int64              `orm:"column(pv)"            json:"pv"`                                             // varchar(255)
+	PickWay            int64              `orm:"column(pick_way)"            json:"pick_way"`                                 // 物流方式
+	PickDept           int64              `orm:"column(pick_dept)"           json:"pick_dept"`                                // 自提部门
+	AddressId          int64              `orm:"column(address_id)"          json:"address_id"`                               // 地址ID
+	DispatchTime       time.Time          `orm:"column(dispatch_time);null;type(datetime)"           json:"dispatch_time"`
+	ReceiveTime        time.Time          `orm:"column(receive_time);null;type(datetime)"            json:"receive_time"`
+	PaiedTime          time.Time          `orm:"column(paied_time);null;type(datetime)"              json:"paied_time"` // int(11)
+	HasCommission      bool               `orm:"has_commission"                                      json:"-"`
+	CreatedAt          time.Time          `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"-"`            // datetime
+	UpdatedAt          time.Time          `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"-"`            // datetime
+	Promotions         string             `orm:"column(promotions);null"                           json:"-"`              // varchar(255)
+	SpecialPro         bool               `orm:"-"                                 json:"special_promotion"`              // int(11)
+	ShutWechat         bool               `orm:"-"                                 json:"shut_wechat"`                    // int(11)
+	PaiedSilver        int64              `orm:"column(paied_silver)"                                json:"paied_silver"` // int(11)
+	TotalSilver        int64              `orm:"column(total_silver)"                                json:"total_silver"` // int(11)
+	DisAmount          int64              `orm:"column(dis_amount)"                                  json:"dis_amount"`   // 折扣
+	PaiedCash          int64              `orm:"column(paied_cash);null"                      json:"paied_cash"`          // int(11)
+	NormalPromotions   string             `orm:"column(normal_promotions);null"                           json:"-"`       // varchar(255)
+	NotPromotionAmount string             `orm:"column(not_promotion_amount);null"                           json:"-"`    // varchar(255)
+	WxUser             *user_model.WxUser `orm:"-"                                 json:"wx_user"`
+	ProductList        []*OrderDetail     `orm:"-"                                 json:"product_list"` // varchar(255)
 }
 
 func (self *Order) TableName() string {
@@ -909,3 +911,51 @@ func GenExpressPassword(expressNo string) string {
 
 	return md5PwdTkey[0:12]
 }
+
+func GetNotInvovedAmount(promotionId int64, orderId string) int64 {
+
+	type PromotionPds struct {
+		ProductId int64 `orm:"column(product_id)"`
+		Nums      int64 `orm:"column(nums)"`
+	}
+
+	sql := `
+		SELECT
+			op.product_id,
+			IF(od.nums IS NULL, 0, od.nums) AS nums
+		FROM
+			products_promotions AS op
+		LEFT JOIN
+			order_details AS od ON od.product_id = op.product_id AND od.order_no =? AND od.is_zeng = 0
+		WHERE
+			op.promotion_id = ?
+    	AND IF(od.nums IS NULL, 0, od.nums) > 0;
+		`
+
+	var results []PromotionPds
+	db := orm.NewOrm()
+	_, err := db.Raw(sql, orderId, promotionId).QueryRows(&results)
+	if err != nil {
+		beego.BeeLogger.Debug("GetNotInvovedAmount err=%s", err)
+		return 0
+	}
+
+	total := int64(0)
+	for _, item := range results {
+		item_pd := product_model.GetProductById(item.ProductId, true)
+		total += item.Nums * item_pd.Price
+	}
+	beego.BeeLogger.Info("GetNotInvovedAmount--promotionId--%d-total-%d", promotionId, total)
+	return total
+}
+
+// UpdateOrderPromotions 更新 normal_promotions字段
+func UpdateOrderPromotions(promotions, noInvovedAmount, orderId string) {
+	o := orm.NewOrm()
+	//更新wx_users会员关系
+	sql := `
+		update orders set normal_promotions=? ,not_promotion_amount=? where order_id=?
+	`
+	o.Raw(sql, promotions, noInvovedAmount, orderId).Exec()
+
+}

+ 18 - 1
go/gopath/src/fohow.com/libs/tool/string.go

@@ -34,7 +34,7 @@ func ConvertNumToCny(num float64) string {
 	strnum := strconv.FormatFloat(num*100, 'f', 0, 64)
 	sliceUnit := []string{"仟", "佰", "拾", "亿", "仟", "佰", "拾", "万", "仟", "佰", "拾", "元", "角", "分"}
 	// log.Println(sliceUnit[:len(sliceUnit)-2])
-	s := sliceUnit[len(sliceUnit)-len(strnum) : len(sliceUnit)]
+	s := sliceUnit[len(sliceUnit)-len(strnum):]
 	upperDigitUnit := map[string]string{"0": "零", "1": "壹", "2": "贰", "3": "叁", "4": "肆", "5": "伍", "6": "陆", "7": "柒", "8": "捌", "9": "玖"}
 	str := ""
 	for k, v := range strnum[:] {
@@ -86,3 +86,20 @@ func StringsContains(array []string, val string) (index int) {
 	}
 	return index
 }
+
+func AddToString(str string, values ...string) string {
+	values = append(values, str)        // 将字符串追加到值列表中
+	result := strings.Join(values, ",") // 使用逗号连接值
+	return result
+}
+
+func CombineInt64ToString(numbers []int64) string {
+	strNumbers := make([]string, len(numbers))
+
+	for i, num := range numbers {
+		strNumbers[i] = strconv.FormatInt(num, 10)
+	}
+
+	result := strings.Join(strNumbers, ",")
+	return result
+}

+ 2 - 2
go/gopath/src/fohow.com/nginx/ngx_dev_config

@@ -49,8 +49,8 @@ server {
     server_name  tfohowapi.hiwavo.com;
     charset utf-8;
     #ssl on;
-    ssl_certificate      /root/sites/fohow_git/x_api/go/gopath/src/fohow.com/static/tapi/7899796_tfohowapi.hiwavo.com.pem;
-    ssl_certificate_key  /root/sites/fohow_git/x_api/go/gopath/src/fohow.com/static/tapi/7899796_tfohowapi.hiwavo.com.key;
+    ssl_certificate      /root/sites/fohow_git/x_api/go/gopath/src/fohow.com/static/tapi/tfohowapi.hiwavo.com.pem;
+    ssl_certificate_key  /root/sites/fohow_git/x_api/go/gopath/src/fohow.com/static/tapi/tfohowapi.hiwavo.com.key;
 
     ssl_session_cache    shared:SSL:1m;
     ssl_session_timeout  5m;

+ 2 - 2
go/gopath/src/fohow.com/nginx/ngx_test_config

@@ -53,8 +53,8 @@ server {
     server_name  tfohowapi.hiwavo.com;
     charset utf-8;
     #ssl on;
-    ssl_certificate      /home/rails/fohow/api/go/gopath/src/fohow.com/static/tapi/7899796_tfohowapi.hiwavo.com.pem;
-    ssl_certificate_key  /home/rails/fohow/api/go/gopath/src/fohow.com/static/tapi/7899796_tfohowapi.hiwavo.com.key;
+    ssl_certificate      /home/rails/fohow/api/go/gopath/src/fohow.com/static/tapi/tfohowapi.hiwavo.com.pem;
+    ssl_certificate_key  /home/rails/fohow/api/go/gopath/src/fohow.com/static/tapi/tfohowapi.hiwavo.com.key;
     ssl_session_cache    shared:SSL:1m;
     ssl_session_timeout  5m;
 

+ 27 - 0
go/gopath/src/fohow.com/static/tapi/tfohowapi.hiwavo.com.key

@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEowIBAAKCAQEA0jIi4ptvpsy63QCIRdGymPLRMQUuK0GqdXhUdM3R/JpCN+ja
+G7tuW1TVjqcV0pZ3BE4PAoRB4P2CZ83UmOfOSOFvs4+ugNmfrwVrjAXOnPosgKqZ
+uuzXtqC1MIi6Isyfc3WvPXSUk5iTguVHlGwJEKEl/5kurxV1hsYgdAqa8SMs+JWm
+PUW3u+/LaB/Yjs4TT0oIPyhWtSDSTM4hjApOcTYp8px2fWLhWhvaF4ExekiSPhAm
+ImlYZ+fuZ5PdafgyDxDrWt+7OGeFxrEJxOtLxhvAAQPzVOYLLGVTeV+5iiDriT7W
+iFiIC+/aPlECSHBc/0hkI/APgVoiuwMRs1OnDwIDAQABAoIBACDR9UJ+1LMtumux
+npWQRZu+Jk3KKkhUy4HmFQHb9VLE31wNfqjf3j5ig6nviufD2LeSXKOe9Q5lZwxA
+RlbNsxcMJD3cTHoQAO/6H63QZk96fKJmgPR/8LqyYzg90RqH6snDcWZeIqjdJQNG
+O6QALnYrQ1yilXh/GEe//edAlKrb83tS9KsL04APsxhxoC/CzNQp79+AKiyIFFGy
+su5Tu20q6JoXf2XK58E4WDm672HoEcALBJZNuYt7KmEIUV2lpS68LcYfTr39mRaJ
+rZlto6p2JEbzP1HDxTFqytIpaIpOCq0ILhW6u59wO9W4nhqsC2wqaMQWefZPUCIy
+7OpQcIECgYEA/WU17ug9L21/gPh+xJ6zRJyMja5OOF5WC02hJZarjZrn3QRAo//C
+LJ3XiD1GPa9jV274vzZgF4BGLVA6SKT50mkholLKoBU0Lzx0TUHKPG8sXvuZtpj0
+lpXEFnJG2+0lFW7Mwsz1fD1a07+CKQ0pGZPFRRUlBEf37D6YZ/68e8ECgYEA1Fs/
+5QNqSR2zSFslrYIa17rznWdZA22gWiC/iy5Ed2oZOFEmEsCdsLRb5lO7/NpLbuRJ
+ZTziNKQrAGeP9VYeGX2fhJ1h6XIyL29TH41hU5Vuv2Ij6E0XFQscHc66VWCT8NhB
+A/+c86+qIgpRKsFKkDEzl/pfhOM+LVeKO0yJFs8CgYAgcIKVETo0BiqakjV4anC8
+yeXchYISCVGupMOKkl1oBXrFerPjyuxK1fIvyNhjMT7ghJ5nrEhk+dECIBE2F5i7
+7SWXKE40bEKAAZdKBLAlSH4/sqodDDvTw1yVGxAjO5rRwZuJHMAYpaopDY1WQA8Q
+7TAGBgz1HVmJ7wGH3r62gQKBgQCIZSu+/tiPqeHzgYfL0BtJoSzEVxMXXpx2Bz7A
+OLGFOcKFJ6oatVkTnGTCpdnC6Ls2uK5jth1czm1ITzxpyix/Fu8UkLnI5a5SRWDQ
+jVCMDRkbGAAUPx+qRn6CrruEBwo+0cfAt7ep1ZSjVJkZqxknUFLhNNGRWxwep3GD
+8P7EhQKBgFIUcDqO8cDcgi2SY8HNqo4eejcC0s1aqd4Z3VVPU6euQI1vQEKXAXTC
+1HvoVz93CoF7tlmRFCUFIyzTn80+Z4gJfhf94Wz7Vd+BSN4tNRFgAxp2Qe+xfAJO
+MhUSCNzODyP4haFuUezkyf+zzkXtEKWIguS1+P11VaSusce3t9s9
+-----END RSA PRIVATE KEY-----

+ 61 - 0
go/gopath/src/fohow.com/static/tapi/tfohowapi.hiwavo.com.pem

@@ -0,0 +1,61 @@
+-----BEGIN CERTIFICATE-----
+MIIF/DCCBOSgAwIBAgIQBlXHuFhTmLbb15RdYT7fZDANBgkqhkiG9w0BAQsFADBu
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg
+RFYgVExTIENBIC0gRzEwHhcNMjMwNjEzMDAwMDAwWhcNMjQwNjEyMjM1OTU5WjAf
+MR0wGwYDVQQDExR0Zm9ob3dhcGkuaGl3YXZvLmNvbTCCASIwDQYJKoZIhvcNAQEB
+BQADggEPADCCAQoCggEBANIyIuKbb6bMut0AiEXRspjy0TEFLitBqnV4VHTN0fya
+Qjfo2hu7bltU1Y6nFdKWdwRODwKEQeD9gmfN1Jjnzkjhb7OProDZn68Fa4wFzpz6
+LICqmbrs17agtTCIuiLMn3N1rz10lJOYk4LlR5RsCRChJf+ZLq8VdYbGIHQKmvEj
+LPiVpj1Ft7vvy2gf2I7OE09KCD8oVrUg0kzOIYwKTnE2KfKcdn1i4Vob2heBMXpI
+kj4QJiJpWGfn7meT3Wn4Mg8Q61rfuzhnhcaxCcTrS8YbwAED81TmCyxlU3lfuYog
+64k+1ohYiAvv2j5RAkhwXP9IZCPwD4FaIrsDEbNTpw8CAwEAAaOCAuMwggLfMB8G
+A1UdIwQYMBaAFFV0T7JyT/VgulDR1+ZRXJoBhxrXMB0GA1UdDgQWBBTZrW2iwj+t
+64Ns7rhxvKpc0QR8RDAfBgNVHREEGDAWghR0Zm9ob3dhcGkuaGl3YXZvLmNvbTAO
+BgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMD4G
+A1UdIAQ3MDUwMwYGZ4EMAQIBMCkwJwYIKwYBBQUHAgEWG2h0dHA6Ly93d3cuZGln
+aWNlcnQuY29tL0NQUzCBgAYIKwYBBQUHAQEEdDByMCQGCCsGAQUFBzABhhhodHRw
+Oi8vb2NzcC5kaWdpY2VydC5jb20wSgYIKwYBBQUHMAKGPmh0dHA6Ly9jYWNlcnRz
+LmRpZ2ljZXJ0LmNvbS9FbmNyeXB0aW9uRXZlcnl3aGVyZURWVExTQ0EtRzEuY3J0
+MAkGA1UdEwQCMAAwggF9BgorBgEEAdZ5AgQCBIIBbQSCAWkBZwB1AO7N0GTV2xrO
+xVy3nbTNE6Iyh0Z8vOzew1FIWUZxH7WbAAABiLNgMAUAAAQDAEYwRAIgTt+gX0fS
+iIM6H6Grr0qbAor1O8PXUIslahoY+O2/24QCIGhxjH9zP2s9ev75Xo/FuuADjH+R
+W99vDnBanxmyvoQ+AHYASLDja9qmRzQP5WoC+p0w6xxSActW3SyB2bu/qznYhHMA
+AAGIs2AwOQAABAMARzBFAiEAkfw3coNMVgVHEyGB1bZCG39ubzjxPiL/3uTT1z2t
+R90CIF6+nQxW+J5L7ApNmnO9E2a1iokfgMPrfp2BHRUfqgvCAHYA2ra/az+1tiKf
+m8K7XGvocJFxbLtRhIU0vaQ9MEjX+6sAAAGIs2Av+gAABAMARzBFAiBUixTY1UB3
+FBi3GD6/lP6yawv4jPTnhSJNJEJXOKETMgIhAI3vYGVqSJ1eimUYcI4Z6TYPWOuZ
+Sh/S8xelcj4aDRWcMA0GCSqGSIb3DQEBCwUAA4IBAQAuHCnQ5Eg6w4VEMA81Xkdn
+buBE+4Das4Vxez4LpaTwUkW2HevyLIU239jeMz+danocm0btAibgMw2S+bbRGFwc
+Olt4gWgVA5T4hsDas28smihEXojRTKbd5JTB5jFtYIr9LvYGVod/WMltZvvb66pK
+vao9Z82UqgsdSv8Is14qJWWXkdmXRHOMPQhv0LJr18GucwRHfLq6DpIGaQHatAs9
+r3hddl1lUUPHa5weaOUX1PbAgLqu9rcD47ij5qlwFnwS6i18AFLP1DAOSgVGOCWg
+hCq3oJsca8EKhh5UnVp2t8fytHhcdPcYKTkNYx3ngEOFA50QHGCkYkAUIBnetrk6
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIEqjCCA5KgAwIBAgIQAnmsRYvBskWr+YBTzSybsTANBgkqhkiG9w0BAQsFADBh
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
+QTAeFw0xNzExMjcxMjQ2MTBaFw0yNzExMjcxMjQ2MTBaMG4xCzAJBgNVBAYTAlVT
+MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
+b20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH
+MTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALPeP6wkab41dyQh6mKc
+oHqt3jRIxW5MDvf9QyiOR7VfFwK656es0UFiIb74N9pRntzF1UgYzDGu3ppZVMdo
+lbxhm6dWS9OK/lFehKNT0OYI9aqk6F+U7cA6jxSC+iDBPXwdF4rs3KRyp3aQn6pj
+pp1yr7IB6Y4zv72Ee/PlZ/6rK6InC6WpK0nPVOYR7n9iDuPe1E4IxUMBH/T33+3h
+yuH3dvfgiWUOUkjdpMbyxX+XNle5uEIiyBsi4IvbcTCh8ruifCIi5mDXkZrnMT8n
+wfYCV6v6kDdXkbgGRLKsR4pucbJtbKqIkUGxuZI2t7pfewKRc5nWecvDBZf3+p1M
+pA8CAwEAAaOCAU8wggFLMB0GA1UdDgQWBBRVdE+yck/1YLpQ0dfmUVyaAYca1zAf
+BgNVHSMEGDAWgBQD3lA1VtFMu2bwo+IbG8OXsj3RVTAOBgNVHQ8BAf8EBAMCAYYw
+HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C
+AQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp
+Y2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu
+Y29tL0RpZ2lDZXJ0R2xvYmFsUm9vdENBLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG
+/WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT
+MAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAK3Gp6/aGq7aBZsxf/oQ+TD/B
+SwW3AU4ETK+GQf2kFzYZkby5SFrHdPomunx2HBzViUchGoofGgg7gHW0W3MlQAXW
+M0r5LUvStcr82QDWYNPaUy4taCQmyaJ+VB+6wxHstSigOlSNF2a6vg4rgexixeiV
+4YSB03Yqp2t3TeZHM9ESfkus74nQyW7pRGezj+TC44xCagCQQOzzNmzEAP2SnCrJ
+sNE2DpRVMnL8J6xBRdjmOsC3N6cQuKuRXbzByVBjCqAA8t1L0I+9wXJerLPyErjy
+rMKWaBFLmfK/AHNF4ZihwPGOc7w6UHczBZXH5RFzJNnww+WnKuTPI0HfnVH8lg==
+-----END CERTIFICATE-----