diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/index b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/index index fb6ec5d..78eece7 100644 Binary files a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/index and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/index differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/01/0b21a76a043ea522f1a517907f0dfac79eef14 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/01/0b21a76a043ea522f1a517907f0dfac79eef14 new file mode 100644 index 0000000..c142a40 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/01/0b21a76a043ea522f1a517907f0dfac79eef14 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/02/b2bc35a3c833cbd737575bb08d9366640ce7f1 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/02/b2bc35a3c833cbd737575bb08d9366640ce7f1 new file mode 100644 index 0000000..3df5237 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/02/b2bc35a3c833cbd737575bb08d9366640ce7f1 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/02/d4e8201138ff19f5e98f1ffab960f1e0d83444 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/02/d4e8201138ff19f5e98f1ffab960f1e0d83444 new file mode 100644 index 0000000..8c6a77e Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/02/d4e8201138ff19f5e98f1ffab960f1e0d83444 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/04/d8098e4245dc2dad6ddd71b60ddab43ae05f24 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/04/d8098e4245dc2dad6ddd71b60ddab43ae05f24 new file mode 100644 index 0000000..d319201 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/04/d8098e4245dc2dad6ddd71b60ddab43ae05f24 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/07/ff864d03ac3b68c4ca3733802ee5f453e7706b b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/07/ff864d03ac3b68c4ca3733802ee5f453e7706b new file mode 100644 index 0000000..02f01ef Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/07/ff864d03ac3b68c4ca3733802ee5f453e7706b differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/0f/25a9ac6b76d729c38ef8a884db6406c69319cb b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/0f/25a9ac6b76d729c38ef8a884db6406c69319cb new file mode 100644 index 0000000..385d86d --- /dev/null +++ b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/0f/25a9ac6b76d729c38ef8a884db6406c69319cb @@ -0,0 +1,2 @@ +xœ•ÎM +1 @a×=E. $ý› ˆwiÒTG:ðø‚k7îßO·u]xJ§ÑÍ@U'A�FVÓ,F)rõ­F­ÄRdÏRÝ«t{�PRN*…ªÏI*Kh„1ÔÙ7d6%öJ®ã¾uØ[}þ] F/úXž7¸\�¦˜|8g8cDtúöq¿J÷ŽFDé \ No newline at end of file diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/0f/45275e9939cfd62963395dec737a73bebc0872 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/0f/45275e9939cfd62963395dec737a73bebc0872 new file mode 100644 index 0000000..7822509 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/0f/45275e9939cfd62963395dec737a73bebc0872 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/0f/fb1d14c19cb22558e1c8b6bf8613b708959a1f b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/0f/fb1d14c19cb22558e1c8b6bf8613b708959a1f new file mode 100644 index 0000000..c0ceae1 --- /dev/null +++ b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/0f/fb1d14c19cb22558e1c8b6bf8613b708959a1f @@ -0,0 +1,4 @@ +xœ•ÎÁ +!€áÎ>ż@ ŽŽ +Ñ»ŒãXKl® =~йK÷ÿƒ_¶u]&xOs¨btI3Jò•Äybn¡&ÌͲ”–Ù:6/úœÐ­Hë5”Ø]ÊDEmeÌèÑ1§–¼¯I«ácÞ·{ooØ·cˆÂ,�åyƒË\ +ÑStálƒµF¾cSÿ æWi>¯ÑCÓ \ No newline at end of file diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/19/b821171aa8f625ba7b541990fd58e406b487ef b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/19/b821171aa8f625ba7b541990fd58e406b487ef new file mode 100644 index 0000000..18d1660 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/19/b821171aa8f625ba7b541990fd58e406b487ef differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/1e/60047ac9348a77426a2662c52b75df6b206410 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/1e/60047ac9348a77426a2662c52b75df6b206410 new file mode 100644 index 0000000..d277c68 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/1e/60047ac9348a77426a2662c52b75df6b206410 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/29/0281faec07d3c360c49a13c98580568fd0a237 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/29/0281faec07d3c360c49a13c98580568fd0a237 new file mode 100644 index 0000000..d8d01cd Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/29/0281faec07d3c360c49a13c98580568fd0a237 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/2e/cb0aaa685da4766ac9bf027faeed7fedd2c9e2 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/2e/cb0aaa685da4766ac9bf027faeed7fedd2c9e2 new file mode 100644 index 0000000..c246f6e Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/2e/cb0aaa685da4766ac9bf027faeed7fedd2c9e2 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/2f/cf2eccaa90304e781420b95a46da94bc1249d8 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/2f/cf2eccaa90304e781420b95a46da94bc1249d8 new file mode 100644 index 0000000..3df1393 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/2f/cf2eccaa90304e781420b95a46da94bc1249d8 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/32/c162b834fe2a40a069b5cf62b1d622039cb841 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/32/c162b834fe2a40a069b5cf62b1d622039cb841 new file mode 100644 index 0000000..1de2ade Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/32/c162b834fe2a40a069b5cf62b1d622039cb841 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/33/517e83c72b6c126a3cad494a638d0ac9d8a01a b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/33/517e83c72b6c126a3cad494a638d0ac9d8a01a new file mode 100644 index 0000000..3035ef4 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/33/517e83c72b6c126a3cad494a638d0ac9d8a01a differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/37/47c2a6839e835aae20b60593f143c9281b7428 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/37/47c2a6839e835aae20b60593f143c9281b7428 new file mode 100644 index 0000000..02b304b Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/37/47c2a6839e835aae20b60593f143c9281b7428 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/37/9e387a7fc2fbe68ab15e3d669fc579bf7ddbee b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/37/9e387a7fc2fbe68ab15e3d669fc579bf7ddbee new file mode 100644 index 0000000..7fbfbe2 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/37/9e387a7fc2fbe68ab15e3d669fc579bf7ddbee differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/3d/9bdf158869f1e4ad01323e7971b20cfa09289c b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/3d/9bdf158869f1e4ad01323e7971b20cfa09289c new file mode 100644 index 0000000..8179ad4 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/3d/9bdf158869f1e4ad01323e7971b20cfa09289c differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/3e/67b4ceec09421890a8fbeaa91ec3f11659ee96 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/3e/67b4ceec09421890a8fbeaa91ec3f11659ee96 new file mode 100644 index 0000000..7641a85 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/3e/67b4ceec09421890a8fbeaa91ec3f11659ee96 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/3f/4041d39c7018a45066fc4c2c8b39f9bc4e2f0c b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/3f/4041d39c7018a45066fc4c2c8b39f9bc4e2f0c new file mode 100644 index 0000000..2f10690 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/3f/4041d39c7018a45066fc4c2c8b39f9bc4e2f0c differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/3f/635a585a79811712905e7ed8bacd891fb2dbd1 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/3f/635a585a79811712905e7ed8bacd891fb2dbd1 new file mode 100644 index 0000000..bb49fd1 --- /dev/null +++ b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/3f/635a585a79811712905e7ed8bacd891fb2dbd1 @@ -0,0 +1,2 @@ +xœ•ÎA +1 @Q×=E. ¤m&mA¼Kš¦:È8R+x|Áµ÷ÿÁ×}ÛÖ Á/‡9Ì ‹Ï‚¹ùŠÑ—ÆJ�¬´Ð‰c‰•b"²{Ȱû„Ê5ÕØXsW$ž f.Ü’ZÓÜ¥5qòš×}À³·7<÷×Pƒ9Doëý§3øDKàÄK�#¢ÓïØ´?ˆûUº©ID \ No newline at end of file diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/44/f7a8c9dbb29dc004544a4886dfc46bb3a3f490 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/44/f7a8c9dbb29dc004544a4886dfc46bb3a3f490 new file mode 100644 index 0000000..939a974 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/44/f7a8c9dbb29dc004544a4886dfc46bb3a3f490 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/4a/5ae7e37129fea6be48eb46c41f88bf94a9e86f b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/4a/5ae7e37129fea6be48eb46c41f88bf94a9e86f new file mode 100644 index 0000000..d64b2f1 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/4a/5ae7e37129fea6be48eb46c41f88bf94a9e86f differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/54/390f5d84d5c73625cee8a37f8334be708cdaa3 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/54/390f5d84d5c73625cee8a37f8334be708cdaa3 new file mode 100644 index 0000000..2fd8e41 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/54/390f5d84d5c73625cee8a37f8334be708cdaa3 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/55/4fa87fd8de773ee7ad5a740577b4e1a5835fd8 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/55/4fa87fd8de773ee7ad5a740577b4e1a5835fd8 new file mode 100644 index 0000000..cc310c7 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/55/4fa87fd8de773ee7ad5a740577b4e1a5835fd8 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/57/edc42cf9486815454483ccaf3eb749eecdde89 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/57/edc42cf9486815454483ccaf3eb749eecdde89 new file mode 100644 index 0000000..89742f4 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/57/edc42cf9486815454483ccaf3eb749eecdde89 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/5e/e0e2b152931a1dbc90f8e56c11962e1905e3f3 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/5e/e0e2b152931a1dbc90f8e56c11962e1905e3f3 new file mode 100644 index 0000000..44a891d Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/5e/e0e2b152931a1dbc90f8e56c11962e1905e3f3 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/5f/69cd7a18253e0618422a9ed9b54655c1321bd8 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/5f/69cd7a18253e0618422a9ed9b54655c1321bd8 new file mode 100644 index 0000000..62955bf Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/5f/69cd7a18253e0618422a9ed9b54655c1321bd8 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/6a/7115ad7e594ea289867e22ece32b27ea9d0581 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/6a/7115ad7e594ea289867e22ece32b27ea9d0581 new file mode 100644 index 0000000..b07f791 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/6a/7115ad7e594ea289867e22ece32b27ea9d0581 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/79/04dc9d395e571524ae2c07e1eddf493bea5b69 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/79/04dc9d395e571524ae2c07e1eddf493bea5b69 new file mode 100644 index 0000000..55c3d3e Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/79/04dc9d395e571524ae2c07e1eddf493bea5b69 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/7a/0e3d6fe6c7846820ee7c56770c25fab8e91b05 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/7a/0e3d6fe6c7846820ee7c56770c25fab8e91b05 new file mode 100644 index 0000000..cb21758 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/7a/0e3d6fe6c7846820ee7c56770c25fab8e91b05 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/7a/bad5a14fb6cf6d4a0aff5a482a2da744751535 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/7a/bad5a14fb6cf6d4a0aff5a482a2da744751535 new file mode 100644 index 0000000..9c2b145 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/7a/bad5a14fb6cf6d4a0aff5a482a2da744751535 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/7c/0aaf36b8ccf0ff5167b858759c66a900d29d5a b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/7c/0aaf36b8ccf0ff5167b858759c66a900d29d5a new file mode 100644 index 0000000..a20a4bd Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/7c/0aaf36b8ccf0ff5167b858759c66a900d29d5a differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/83/e9bd0e09f83f24790a0140859fd0a429dbcff0 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/83/e9bd0e09f83f24790a0140859fd0a429dbcff0 new file mode 100644 index 0000000..aadae74 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/83/e9bd0e09f83f24790a0140859fd0a429dbcff0 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/87/684c156f6448e4507e6c230d988544c53c78d8 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/87/684c156f6448e4507e6c230d988544c53c78d8 new file mode 100644 index 0000000..daf49e8 --- /dev/null +++ b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/87/684c156f6448e4507e6c230d988544c53c78d8 @@ -0,0 +1,4 @@ +xœ•ÎA +Â0@Q×9Å\@H2“¦ñ.“ÉŒ©•4�/¸vãþ?ø²­ë2 †t]Ì(Ô2U¬1Ñd³™I#VMy´2×,d-¸w}`m%cDÎè½z±9N¨)znd¹”ã¾uØ­½aߎ. +£³<–ç .W™R$*>ÃÙ“÷N¾cCÿ îWé>~ +DÛ \ No newline at end of file diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/8a/18a08d1b0319d6c4f4e9d2f46393b43744a128 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/8a/18a08d1b0319d6c4f4e9d2f46393b43744a128 new file mode 100644 index 0000000..480bac2 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/8a/18a08d1b0319d6c4f4e9d2f46393b43744a128 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/8e/e971d7cea680bba00085f21695ca6ea1226693 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/8e/e971d7cea680bba00085f21695ca6ea1226693 new file mode 100644 index 0000000..b12cb67 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/8e/e971d7cea680bba00085f21695ca6ea1226693 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/91/8d5f44b69039c362da74de751ac28ab817ed9f b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/91/8d5f44b69039c362da74de751ac28ab817ed9f new file mode 100644 index 0000000..7b46f06 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/91/8d5f44b69039c362da74de751ac28ab817ed9f differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/9c/27a7787ce83a4f5a6b920c82c4c144a30e3249 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/9c/27a7787ce83a4f5a6b920c82c4c144a30e3249 new file mode 100644 index 0000000..3cb5cbe Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/9c/27a7787ce83a4f5a6b920c82c4c144a30e3249 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/9f/57081c0eb579d666848070a9f3dde6f29d1007 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/9f/57081c0eb579d666848070a9f3dde6f29d1007 new file mode 100644 index 0000000..80b6652 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/9f/57081c0eb579d666848070a9f3dde6f29d1007 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/a3/e0b240163acd9a4156794b7f887ceda9b1fa52 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/a3/e0b240163acd9a4156794b7f887ceda9b1fa52 new file mode 100644 index 0000000..ffa1e8f Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/a3/e0b240163acd9a4156794b7f887ceda9b1fa52 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/a7/23606248b13ac39773224a0fe141ffb85a42b6 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/a7/23606248b13ac39773224a0fe141ffb85a42b6 new file mode 100644 index 0000000..bb8b75f Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/a7/23606248b13ac39773224a0fe141ffb85a42b6 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/b3/a565cba1d265bd9b3f10a003d82f099ec192c1 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/b3/a565cba1d265bd9b3f10a003d82f099ec192c1 new file mode 100644 index 0000000..5114916 --- /dev/null +++ b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/b3/a565cba1d265bd9b3f10a003d82f099ec192c1 @@ -0,0 +1,2 @@ +xœ•ÎA +Â0@Q×9Å\@H&3ɤwI§S-ÒVÒ<¾àÚ�ûÿàë¾®K |éÍ b¦¬X“Äb¹VC?&Ï%Î�¢”0fBq¯Úlë 9 ià4'"1bŸ-)F?&RŽšeWÏþØóô†c?›ôVõ¹lw¸ 21’`a¸zòÞéw¬ÛÄý*ÝlÜAÝ \ No newline at end of file diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/b3/fa5c9312f56dfceb9e670a4057d10bea433e7b b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/b3/fa5c9312f56dfceb9e670a4057d10bea433e7b new file mode 100644 index 0000000..a959901 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/b3/fa5c9312f56dfceb9e670a4057d10bea433e7b differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/b6/b7b3d6c8fc046216a0908696d7ce8aec8fadda b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/b6/b7b3d6c8fc046216a0908696d7ce8aec8fadda new file mode 100644 index 0000000..eb3d573 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/b6/b7b3d6c8fc046216a0908696d7ce8aec8fadda differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/b8/9f96b216df3e7be8b6617961491875c8014594 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/b8/9f96b216df3e7be8b6617961491875c8014594 new file mode 100644 index 0000000..f54ec2f Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/b8/9f96b216df3e7be8b6617961491875c8014594 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/b9/c2c88d00dcaab6f2287e2593f28c7d87d5c2ba b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/b9/c2c88d00dcaab6f2287e2593f28c7d87d5c2ba new file mode 100644 index 0000000..6bd2881 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/b9/c2c88d00dcaab6f2287e2593f28c7d87d5c2ba differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/ba/92fe33c251da79a00c2e5f5a6c198236154644 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/ba/92fe33c251da79a00c2e5f5a6c198236154644 new file mode 100644 index 0000000..43c54eb Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/ba/92fe33c251da79a00c2e5f5a6c198236154644 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/c4/a3e380a32dc695acc0147c4cf0056f09781fb2 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/c4/a3e380a32dc695acc0147c4cf0056f09781fb2 new file mode 100644 index 0000000..89d4551 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/c4/a3e380a32dc695acc0147c4cf0056f09781fb2 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/c6/e7e028a660d4465c2365cacc90f999a4b36535 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/c6/e7e028a660d4465c2365cacc90f999a4b36535 new file mode 100644 index 0000000..ee7ac40 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/c6/e7e028a660d4465c2365cacc90f999a4b36535 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/c9/206eadbf01b61133d1de92c1a91cf0e0e61bb9 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/c9/206eadbf01b61133d1de92c1a91cf0e0e61bb9 new file mode 100644 index 0000000..ab46b8e Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/c9/206eadbf01b61133d1de92c1a91cf0e0e61bb9 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/cc/c7b0c4e1ed58be1549d2fd4cd19bab8b29ba90 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/cc/c7b0c4e1ed58be1549d2fd4cd19bab8b29ba90 new file mode 100644 index 0000000..61dbfc9 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/cc/c7b0c4e1ed58be1549d2fd4cd19bab8b29ba90 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/da/a540c28199a662b2051d3c05c3b31c768f35e9 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/da/a540c28199a662b2051d3c05c3b31c768f35e9 new file mode 100644 index 0000000..3039dbf Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/da/a540c28199a662b2051d3c05c3b31c768f35e9 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/de/e5758307398da96ba41e6d956f621de6346fa6 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/de/e5758307398da96ba41e6d956f621de6346fa6 new file mode 100644 index 0000000..673e229 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/de/e5758307398da96ba41e6d956f621de6346fa6 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/df/21a3718ee285ea525f41fc71cfe0c059295ad9 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/df/21a3718ee285ea525f41fc71cfe0c059295ad9 new file mode 100644 index 0000000..743eb25 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/df/21a3718ee285ea525f41fc71cfe0c059295ad9 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/f0/ccdfb495f178669e0ba383231aa7d722b236eb b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/f0/ccdfb495f178669e0ba383231aa7d722b236eb new file mode 100644 index 0000000..35fa672 --- /dev/null +++ b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/f0/ccdfb495f178669e0ba383231aa7d722b236eb @@ -0,0 +1,2 @@ +xœ•ÎM +1 @a×=E. ¤iâ]Ú4ÕAÆ‘N<¾àÚ�û÷Á“m]— ÎÆÓªÀ=&ÌVPkL܈(‡Œ wßšRwÜ,b2¯2ô9»‹…‹PMÔ’cñY{.9‡V) ±·,Õ”cÞ·{ooØ·cˆÂEËó—+Ø¢£ˆäáŒÑÈwlêÄü*ÍUCK \ No newline at end of file diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/f4/4cbf72a6e2642cde2550448aba939801e9af0c b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/f4/4cbf72a6e2642cde2550448aba939801e9af0c new file mode 100644 index 0000000..de3e810 --- /dev/null +++ b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/f4/4cbf72a6e2642cde2550448aba939801e9af0c @@ -0,0 +1 @@ +xœ+)JMU06d01000PÈMÌÌcÈ*][é·¨³­NéÍcmõWsYõv/ \ No newline at end of file diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/f7/1c302ecf8af361be73b4f42b8b4ca1af3529d1 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/f7/1c302ecf8af361be73b4f42b8b4ca1af3529d1 new file mode 100644 index 0000000..01eba54 Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/f7/1c302ecf8af361be73b4f42b8b4ca1af3529d1 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/ff/41b96b3b2546f8fffcd4aee578c3f98b7c4fd1 b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/ff/41b96b3b2546f8fffcd4aee578c3f98b7c4fd1 new file mode 100644 index 0000000..c9fc06b Binary files /dev/null and b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/objects/ff/41b96b3b2546f8fffcd4aee578c3f98b7c4fd1 differ diff --git a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/refs/heads/main b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/refs/heads/main index b7027ef..8ed3f61 100644 --- a/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/refs/heads/main +++ b/.sf/orgs/00DEi000009lLroMAE/localSourceTracking/refs/heads/main @@ -1 +1 @@ -aedb3c7323a730a30e0cf8263e520ad4fe2a9912 +3f635a585a79811712905e7ed8bacd891fb2dbd1 diff --git a/.sf/orgs/00DEi000009lLroMAE/maxRevision.json b/.sf/orgs/00DEi000009lLroMAE/maxRevision.json index fc1e4a4..b1d18e5 100644 --- a/.sf/orgs/00DEi000009lLroMAE/maxRevision.json +++ b/.sf/orgs/00DEi000009lLroMAE/maxRevision.json @@ -1,6 +1,6 @@ { "fileVersion": 0, - "serverMaxRevisionCounter": 104, + "serverMaxRevisionCounter": 125, "sourceMembers": { "ReportFolder__prm_channel_reports_folder": { "memberType": "ReportFolder", @@ -196,20 +196,20 @@ }, "Profile__Admin": { "memberType": "Profile", - "serverRevisionCounter": 97, + "serverRevisionCounter": 124, "lastRetrievedFromServer": null, "isNameObsolete": false }, "ApexClass__OpportunityCloneService": { "memberType": "ApexClass", - "serverRevisionCounter": 45, - "lastRetrievedFromServer": 45, + "serverRevisionCounter": 115, + "lastRetrievedFromServer": 115, "isNameObsolete": false }, "ApexClass__OpportunityCloneServiceTest": { "memberType": "ApexClass", - "serverRevisionCounter": 46, - "lastRetrievedFromServer": 46, + "serverRevisionCounter": 125, + "lastRetrievedFromServer": 125, "isNameObsolete": false }, "ApexClass__TestCloneUtility": { @@ -385,6 +385,24 @@ "serverRevisionCounter": 103, "lastRetrievedFromServer": 103, "isNameObsolete": false + }, + "CustomMetadata__SmartCloneRecordExclusionRule.LineItemPriceBelowFiftyDollars": { + "memberType": "CustomMetadata", + "serverRevisionCounter": 112, + "lastRetrievedFromServer": null, + "isNameObsolete": true + }, + "CustomMetadata__SmartCloneRecordExclusionRule.QuantityLessThanTwo": { + "memberType": "CustomMetadata", + "serverRevisionCounter": 116, + "lastRetrievedFromServer": 116, + "isNameObsolete": false + }, + "StaticResource__SmartClone_TestData": { + "memberType": "StaticResource", + "serverRevisionCounter": 117, + "lastRetrievedFromServer": 117, + "isNameObsolete": false } } } \ No newline at end of file diff --git a/force-app/main/default/classes/OpportunityCloneService.cls b/force-app/main/default/classes/OpportunityCloneService.cls index cd33ed8..2e1ffe1 100644 --- a/force-app/main/default/classes/OpportunityCloneService.cls +++ b/force-app/main/default/classes/OpportunityCloneService.cls @@ -19,30 +19,50 @@ public with sharing class OpportunityCloneService { * @description Map of Child relationship objects to the opportunity. */ public static Map opportunityChildrenMap; + public static Map exclusionRuleMap; + public static Map> formulaInstanceBySObjectMap; /** * @description static constructor that will populate the opportunityChildrenMap */ static { List childRelationshipList = Schema.Opportunity.getSObjectType().getDescribe().getChildRelationships(); - opportunityChildrenMap = new Map(); - List restrictedRelationshipList = new List(); - String restrictedChildList = Label.SmartCloneChildList; - if(String.isNotBlank(restrictedChildList)){ - restrictedRelationshipList = restrictedChildList.split(';'); - } - for(Schema.ChildRelationship childRel:childRelationshipList) { - if(String.isNotBlank(childRel.getRelationshipName())){ - Schema.DescribeSObjectResult childObjRes = childRel.getChildSObject().getDescribe(); - if(!restrictedRelationshipList.isEmpty() && restrictedRelationshipList[0] != 'N/A'){ - if(restrictedRelationshipList.contains(childObjRes.getName())){ - opportunityChildrenMap.put(childRel.getRelationshipName(),childObjRes); - } - } else { + opportunityChildrenMap = new Map(); + List restrictedRelationshipList = new List(); + String restrictedChildList = Label.SmartCloneChildList; + if(String.isNotBlank(restrictedChildList)){ + restrictedRelationshipList = restrictedChildList.split(';'); + } + for(Schema.ChildRelationship childRel:childRelationshipList) { + if(String.isNotBlank(childRel.getRelationshipName())){ + Schema.DescribeSObjectResult childObjRes = childRel.getChildSObject().getDescribe(); + if(!restrictedRelationshipList.isEmpty() && restrictedRelationshipList[0] != 'N/A'){ + if(restrictedRelationshipList.contains(childObjRes.getName())){ opportunityChildrenMap.put(childRel.getRelationshipName(),childObjRes); } + } else { + opportunityChildrenMap.put(childRel.getRelationshipName(),childObjRes); } } + } + exclusionRuleMap = new Map(); + formulaInstanceBySObjectMap = new Map>(); + Map sObjectTypeMap = Schema.getGlobalDescribe(); + for(SmartCloneRecordExclusionRule__mdt rule:SmartCloneRecordExclusionRule__mdt.getAll().values()){ + if(rule.IsActive__c && String.isNotBlank(rule.ExclusionFormula__c)){ + exclusionRuleMap.put(rule.DeveloperName,rule); + String sObjectName = rule.RelatedObject__c; + FormulaEval.FormulaInstance fInstance = Formula.builder().withType(sObjectTypeMap.get(sObjectName.toLowerCase())) + .withReturnType(FormulaEval.FormulaReturnType.Boolean) + .withFormula(rule.ExclusionFormula__c).build(); + List fInstanceList = formulaInstanceBySObjectMap.get(sObjectName); + if(fInstanceList == null){ + fInstanceList = new List(); + } + fInstanceList.add(fInstance); + formulaInstanceBySObjectMap.put(sObjectName,fInstanceList); + } + } } /** * @description Lightning Exposed method that will provide a map of Child relationships @@ -185,16 +205,30 @@ public with sharing class OpportunityCloneService { } private static List CloneAndReassociateRecords(List recList, String parentFieldName, Id newParentId) { + System.debug(LoggingLevel.INFO,'\n\nOpportunityCloneService.CloneAndReassociateRecords Executing.\n\n '); List newList = new List(); for(SObject rec:recList){ SObject newRec = rec.clone(false,true,false,false); newRec.put(parentFieldName, newParentId); - /** - if(newRec.getSObjectType().getDescribe().getName().toUpperCase() == 'OPPORTUNITYLINEITEM') { + String sObjectName = newRec.getSObjectType().getDescribe().getName(); + if(sObjectName.toUpperCase() == 'OPPORTUNITYLINEITEM') { newRec.put('UnitPrice',null); } - */ - newList.add(newRec); + //TODO: This is where we can evaluate the record to determine if it meets the formula criteria being included + // as a child record. + Boolean fResult = false; + if(formulaInstanceBySObjectMap.containsKey(sObjectName)){ + List fInstanceList = formulaInstanceBySObjectMap.get(sObjectName); + for(FormulaEval.FormulaInstance fInstance:fInstanceList){ + fResult = (Boolean)fInstance.evaluate(newRec); + if(fResult) { + break; + } + } + } + if(!fResult) { + newList.add(newRec); + } } return newList; } diff --git a/force-app/main/default/classes/OpportunityCloneServiceTest.cls b/force-app/main/default/classes/OpportunityCloneServiceTest.cls index e92feda..d65c741 100644 --- a/force-app/main/default/classes/OpportunityCloneServiceTest.cls +++ b/force-app/main/default/classes/OpportunityCloneServiceTest.cls @@ -70,6 +70,7 @@ private class OpportunityCloneServiceTest { } } insert oliTestLines; + testFutureMethod(); } @isTest @@ -106,10 +107,11 @@ private class OpportunityCloneServiceTest { } @isTest static void CloneOpportunityWithChildren(){ + Test.startTest(); Opportunity testOpp = [SELECT Id, Name FROM Opportunity LIMIT 1]; Map testReplacements = new Map(); testReplacements.put('Name',TestCloneUtility.GenerateRandomString(10)); - Test.startTest(); + Id testResult = OpportunityCloneService.CloneOpportunityWithChildren(testOpp.Id, testReplacements, new List{'OpportunityLineItems'}); @@ -117,4 +119,9 @@ private class OpportunityCloneServiceTest { Test.stopTest(); } + @future + public static void testFutureMethod(){ + //insert some Exlusion rules + Test.loadData(SmartCloneRecordExclusionRule__mdt.SObjectType, 'SmartClone_TestData'); + } } diff --git a/force-app/main/default/customMetadata/SmartCloneRecordExclusionRule.QuantityLessThanTwo.md-meta.xml b/force-app/main/default/customMetadata/SmartCloneRecordExclusionRule.QuantityLessThanTwo.md-meta.xml new file mode 100644 index 0000000..57edc42 --- /dev/null +++ b/force-app/main/default/customMetadata/SmartCloneRecordExclusionRule.QuantityLessThanTwo.md-meta.xml @@ -0,0 +1,17 @@ + + + + false + + ExclusionFormula__c + Quantity < 2 + + + IsActive__c + false + + + RelatedObject__c + OpportunityLineItem + + diff --git a/force-app/main/default/staticresources/SmartClone_TestData.csv b/force-app/main/default/staticresources/SmartClone_TestData.csv new file mode 100644 index 0000000..f60927f --- /dev/null +++ b/force-app/main/default/staticresources/SmartClone_TestData.csv @@ -0,0 +1,2 @@ +DeveloperName,MasterLabel,IsActive__c,RelatedObject__c,ExclusionFormula__c +QuantityLessThanThree,QuantityLessThanThree,TRUE,OpportunityLineItem,Quantity < 3 \ No newline at end of file diff --git a/force-app/main/default/staticresources/SmartClone_TestData.resource-meta.xml b/force-app/main/default/staticresources/SmartClone_TestData.resource-meta.xml new file mode 100644 index 0000000..379e387 --- /dev/null +++ b/force-app/main/default/staticresources/SmartClone_TestData.resource-meta.xml @@ -0,0 +1,6 @@ + + + Public + text/csv + Test Data for SmartClone Code Coverage. +