Snippets Collections
import './index.css';
import React from 'react';
import Apis from './APIs';
import axios from 'axios';

function App() {
  const [responseId, setResponseId] = React.useState("");
  const [responseState, setResponseState] = React.useState([]);

  const loadScript = (src) => {
    return new Promise((resolve) => {
      const script = document.createElement("script");

      script.src = src;

      script.onload = () => {
        resolve(true);
      };
      script.onerror = () => {
        resolve(false);
      };

      document.body.appendChild(script);
    });
  };

  const createRazorpayOrder = async (amount) => {
    const data = {
      amount: amount * 100,
      currency: "INR"
    };

    try {
      const response = await axios.post(Apis.PAYMENT_API.CREATE_ORDER, data);
      handleRazorpayScreen(response.data.amount, response.data.order_id);
    } catch (error) {
      console.error("Error creating order:", error);
    }
  };

  const handleRazorpayScreen = async (amount, orderId) => {
    const res = await loadScript("https://checkout.razorpay.com/v1/checkout.js");

    if (!res) {
      alert("Some error at Razorpay screen loading");
      return;
    }

    const options = {
      key: 'rzp_test_GcZZFDPP0jHtC4',
      amount: amount,
      currency: 'INR',
      name: "Papaya Coders",
      description: "Payment to Papaya Coders",
      image: "https://papayacoders.com/demo.png",
      order_id: orderId, // Use the order ID for payment
      handler: function (response) {
        setResponseId(response.razorpay_payment_id);
      },
      prefill: {
        name: "Papaya Coders",
        email: "papayacoders@gmail.com"
      },
      theme: {
        color: "#F4C430"
      }
    };

    const paymentObject = new window.Razorpay(options);
    paymentObject.open();
  };

  const paymentFetch = async (e) => {
    e.preventDefault();
    const paymentId = e.target.paymentId.value;

    try {
      const response = await axios.get(Apis.PAYMENT_API.FETCH_PAYMENT(paymentId));
      setResponseState(response.data);
    } catch (error) {
      console.error("Error fetching payment:", error);
    }
  };

  return (
    <div className="App flex flex-col items-center justify-center min-h-screen bg-gray-100">
      <button
        className="bg-yellow-400 hover:bg-yellow-500 text-white font-bold py-2 px-4 rounded mb-4"
        onClick={() => createRazorpayOrder(100)}
      >
        Payment of 100 Rs.
      </button>
      {responseId && <p className="text-green-600">{responseId}</p>}
      <h1 className="text-2xl font-bold mb-4">This is payment verification form</h1>
      <form onSubmit={paymentFetch} className="flex flex-col items-center">
        <input
          type="text"
          name="paymentId"
          className="border rounded py-2 px-4 mb-4"
          placeholder="Enter Payment ID"
        />
        <button
          type="submit"
          className="bg-blue-500 hover:bg-blue-600 text-white font-bold py-2 px-4 rounded"
        >
          Fetch Payment
        </button>
        {responseState.length !== 0 && (
          <ul className="mt-4 bg-white p-4 rounded shadow">
            <li>Amount: {responseState.amount / 100} Rs.</li>
            <li>Currency: {responseState.currency}</li>
            <li>Status: {responseState.status}</li>
            <li>Method: {responseState.method}</li>
          </ul>
        )}
      </form>
    </div>
  );
}

export default App;
(function() {
  // Find the iframe
  const iframe = document.querySelector('iframe[src^="https://docs.google.com/spreadsheets"]');
  if (!iframe) {
    console.error('Google Spreadsheet iframe not found');
    return;
  }

  // Create a container for the iframe
  const container = document.createElement('div');
  container.className = 'spreadsheet-container';
  iframe.parentNode.insertBefore(container, iframe);
  container.appendChild(iframe);

  // Apply styles
  const style = document.createElement('style');
  style.textContent = `
    .spreadsheet-container {
      width: 100%;
      height: 560px;
      overflow: hidden;
    }
    .spreadsheet-container iframe {
      width: 100%;
      height: 100%;
      border: none;
    }
    body {
      overflow: hidden;
    }
  `;
  document.head.appendChild(style);

  // Add event listeners
  container.addEventListener('wheel', function(e) {
    e.preventDefault();
    iframe.contentWindow.scrollBy(e.deltaX, e.deltaY);
  }, { passive: false });

  container.addEventListener('mouseenter', function() {
    document.body.style.overflow = 'hidden';
  });

  container.addEventListener('mouseleave', function() {
    document.body.style.overflow = 'auto';
  });

  console.log('Spreadsheet scrolling behavior modified successfully');
})();
import java.util.Scanner;
public class java{
    public static void main(String [] args){
        Scanner sa=new Scanner(System.in);
        int n,i,s,m,l,min,max;
        int tab[]=new int [30];
        s=0;
        m=0;
        do{
            System.out.println("donner la taille : \n");
            n=sa.nextInt();
        }while(n<1 || n>30 );
        for(i=0;i<n;i++){
            System.out.println("T["+i+"]= ");
            tab[i]=sa.nextInt();
                s=s+tab[i];
            System.out.println("\n");
        }
        min=tab[0];
        max=tab[0];
        for(i=0;i<n;i++){
             if (tab[i]<min)
            min=tab[i];
            if (tab[i]>max)
            max=tab[i];
        }
        m=s/n;
        
    System.out.println("la somme de tableau :" +s);
    System.out.println("la moyenne de tableau :" +m);
    System.out.println("la min de tableau :" +min);
    System.out.println("la max de tableau :" +max);
    
        
        
    }
}
import java.util.Scanner;
public class java{
    public static void main(String [] args){
        Scanner sa=new Scanner(System.in);
        int n,i,f;
        f=1;
        System.out.println("Ecrire un entier: ");
        n=sa.nextInt();
        for(i=1;i<=n;i++){
            f=f*i;
            
        }
        System.out.println(f);
        System.out.println("\n");
        
    }
}

import java.util.Scanner;
public class java{
    public static void main(String [] args){
    Scanner sa=new Scanner(System.in);
    int x;
    System.out.println("donner un entier: \n");
    x=sa.nextInt();
    if((x%2)==0)
        System.out.println("entier paire");
    else
    System.out.println("entier impaire");

}}
:: Enable `mpp` command instead of `npx markdown-plus-plus`...
npm install --global markdown-plus-plus

:: List all themes
mpp --list

:: Example: Download Solarized-light UDL file
mpp solarized-light

:: Example: Download Solarized UDL file for Dark Mode
mpp solarized --dark

:: Update this package
npm update markdown-plus-plus
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": "✨ :magic_wand::xero-unicorn: End of Year Celebration – A Sprinkle of Magic! :xero-unicorn: :magic_wand:✨",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*Hi Denver!* \nGet ready to wrap up the year with a sprinkle of magic and a lot of fun at our End of Year Event! Here’s everything you need to know:"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"fields": [
				{
					"type": "mrkdwn",
					"text": "*πŸ“… When:*\nFriday, November 22nd"
				},
				{
					"type": "mrkdwn",
					"text": "*πŸ“ Where:*\n<https://lobplay.com/location/?location=denver|*Lob Denver*> \n1755 Blake Street, Denver"
				},
				{
					"type": "mrkdwn",
					"text": "*⏰ Time:*\n5pm - 9pm"
				}
			]
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*:magic_wand::xero-unicorn: Theme:*\n_A Sprinkle of Magic_ – Our theme is inspired by the Xero Unicorn, embracing creativity, inclusivity, and diversity. Expect unique decor, magical moments, and a fun-filled atmosphere!"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*:dress: Dress Code:*\nSmart casual – Show your personality, but no Xero tees or lanyards, please!\nIf you're feeling inspired by the theme, why not add a little 'Sprinkle of Magic' to your outfit? Think glitter, sparkles, or anything that shows off your creative side! (Totally optional, of course! ✨)"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*🚍 Transport Info:*\n*The event venue is a 5 minute drive/uber/lyft/cab ride from the Xero office, or a 20-25 stroll from the office. Metered street parking and garage parking is available near the venue.  SpotHero is a great app to find parking spots!"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*🎀 :hamburger: Entertainment & Food:*\nEnjoy an evening of fun (or competitive!) games of Bocce-Golf, while enjoying awesome tunes, tantalizing food, and lots of space to connect with your fellow Xeros! ✨🎢"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*🎟 RSVP Now:*\nPlease click <https://xero-wx.jomablue.com/reg/store/eoy_den|*here*> to RSVP!\nMake sure you RSVP by November 8th!"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":question::question:Got questions? See the <https://docs.google.com/document/d/1iygJFHgLBRSdAffNsg3PudZCA45w6Wit7xsFxNc_wKM/edit|FAQs> doc or post in the Slack channel.\nWe can’t wait to celebrate with you! :partying_face: :xero-love:"
			}
		}
	]
}
def compare_first_four_keys(expected_dict, predicted_dict):
    #Compare the first 4 key-value pairs to see if the dictionaries match, 
    #including checking the first 3 values if the value is a list.

    expected_items = list(expected_dict.items())[:3]  # Get the first 4 key-value pairs
    for key, expected_value in expected_items:
        if key in predicted_dict:
            predicted_value = predicted_dict[key]
            # If both values are lists, compare the first 3 elements
            if isinstance(expected_value, list) and isinstance(predicted_value, list):
                if len(expected_value) >= 3 and len(predicted_value) >= 3:
                   if all(pytest.approx(ev) == pv for ev, pv in zip(expected_value, predicted_value)):
                        return True
    return False


# Sample function that generates the output dictionaries (replace with your function)
def get_output_dict(Table_Category):
    # Example function output based on Table_Category
    if Table_Category == 'SLP':
        return {'key1': 'value1', 'key2': 'value2', ...}  # Replace with actual dictionary
    elif Table_Category == 'XYZ':
        return {'keyA': 'valueA', 'keyB': 'valueB', ...}
    return {}


def dict_length_check(expected_dict):
    if expected_dict['Table Category'] == 'RLM' and len(expected_dict) == 46:
        print("Length of this RLM table matches")
        return True
    elif expected_dict['Table Category'] == 'SLP' and len(expected_dict) == 24:
        print("Length of this SLP table matches")
        return True
    elif expected_dict['Table Category'] == 'Metering' and len(expected_dict) == 17:
        print("Length of this Metering table matches")
        return True        


#test with parametrize for two arguments: pdf_name and expected_pdf
@pytest.mark.parametrize("pdf_name, expected_pdf", [
    ("Actual-Avacon_2024", "Actual-Avacon_2024"),
    ("ACTUAL_Erdgas Mittelsachsen GmbH_2024", "Mittelsachsen"),("Actual-bnNETZE_2024","bnNetze"),
    ("Preliminar_Gemeindewerke Peiner Land GmbH_2024","Preliminar_Gemeindewerke")])

def test_actual_avacon(pdf_name,expected_pdf):
    accuracies = []
    pdf_file_path = os.path.join(current_dir, '..', '..', 'docs', 'RTE', pdf_name + ".pdf")
    with open (pdf_file_path,'rb') as file:
        response = client.post('/rte_from_file', files= {'file': file})
        print("GPT Response received")
    assert response.status_code == 200
    predicted_json = response.json()
    expected_output = expected_op_json['expected_output'][expected_pdf]
    for i in range (len(predicted_json['extracted_keyword_list'])):
        expected_dict = expected_output[i]
        predicted_dict = predicted_json['extracted_keyword_list'][i]
        if compare_first_four_keys(expected_dict,predicted_dict) and dict_length_check(expected_dict):
            total_elements = 0
            matched_keys = 0
            # Iterate through the expected dictionary
            for key in list(expected_dict.keys()):
                if key in predicted_dict:
                    total_elements += 1
                    expected_value = expected_dict[key]
                    predicted_value = predicted_dict[key]
                    # Handle list comparisons
                    if isinstance(expected_value, list) and isinstance(predicted_value, list):
                        if len(expected_value) == len(predicted_value):
                            # Use pytest.approx for numerical lists
                            if all(isinstance(i, (int, float)) for i in expected_value):
                                if all(pytest.approx(ev) == pv for ev, pv in zip(expected_value, predicted_value)):
                                    matched_keys += 1
                            # Direct equality for non-numeric lists
                            elif expected_value == predicted_value:
                                matched_keys += 1
                    # Use pytest.approx for single numeric values
                    elif isinstance(expected_value, (int, float)) and isinstance(predicted_value, (int, float)):
                        if pytest.approx(expected_value) == predicted_value:
                            matched_keys += 1
                    # Direct equality for non-numeric values
                    elif expected_value == predicted_value:
                        matched_keys += 1
        accuracy = (matched_keys/total_elements) * 100 if total_elements else 0
        accuracies.append(accuracy)
        print(f"Dictionary {i+1}: Accuracy is {accuracy:.2f}% with {matched_keys}/{total_elements} elements matched.")
        print(f"Dictionary {i+1} has Accuracy: {accuracy:.2f}%.")




add_filter( 'woocommerce_checkout_fields', 'custom_remove_woo_checkout_fields' );

function custom_remove_woo_checkout_fields( $fields ) {
    // Remove billing fields
    unset($fields['billing']['billing_company']); // Remove Company Name
    unset($fields['billing']['billing_phone']);   // Remove Phone Number
    unset($fields['billing']['billing_address_2']); // Remove Address Line 2

    // Remove shipping fields if needed
    unset($fields['shipping']['shipping_company']); // Remove Shipping Company Name

    return $fields;
}
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;

// Function to perform Counting Sort based on digit place (1s, 10s, 100s, etc.)
void countSort(int arr[], int n, int exponent) {
    std::vector<int> count(n,0);
    for(int i=0;i<n;i++){
        count[(arr[i]/exponent)%10]++;
    }
    
    for(int i=1;i<n;i++){
        count[i] = count[i] + count[i-1];
    }
     std::vector<int> ans(n,0);

    for(int i=n-1;i>=0;i--){
        int index = --count[(arr[i]/exponent)%10];
        ans[index] = arr[i]; 
    }
    for(int i=0;i<n;i++){
        arr[i] = ans[i];
    }
}

// Function to perform Radix Sort on the array.
void radixSort(int arr[], int n) {
    int maxNumber  = arr[0];
    for(int i=1;i<n;i++){
        if(maxNumber<arr[i]){
            maxNumber= arr[i];
        }
    }
    maxNumber = int(log10(maxNumber) + 1);
    int exponent = 1;
    for(int i=0;i<maxNumber;i++){
        countSort(arr,n,exponent);
        exponent = exponent*10;
    }
}

// Function to initiate the Radix Sort process.
void processRadixSort(int arr[], int n) {
    if(n>1){
        radixSort(arr,n);
    }
}

void displayArray(int arr[], int n) {
    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;
}

// Function to dynamically allocate an array and fill it with random values.
void fillDynamicArrayWithRandomValues(int** arr, int* n) {
    cout << "Enter the size of the array: ";
    cin >> *n;
    *arr = new int[*n];
    srand(time(0)); // Seed for random number generation
    for (int i = 0; i < *n; i++) {
        (*arr)[i] = rand() % 1000; // Fill with random numbers between 0 and 999
    }
}

int main() {
    int* arr;
    int n;
    fillDynamicArrayWithRandomValues(&arr, &n);
    cout << "Unsorted array: ";
    displayArray(arr, n);
    processRadixSort(arr, n);
    cout << "Sorted array: ";
    displayArray(arr, n);
    delete[] arr; // Deallocate dynamically allocated memory
    return 0;
}
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": "✨ :magic_wand::xero-unicorn: End of Year Celebration – A Sprinkle of Magic! :xero-unicorn: :magic_wand:✨",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*Hi Toronto!* \nGet ready to wrap up the year with a sprinkle of magic and a lot of fun at our End of Year Event! Here’s everything you need to know:"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"fields": [
				{
					"type": "mrkdwn",
					"text": "*πŸ“… When:*\nThursday 28th November"
				},
				{
					"type": "mrkdwn",
					"text": "*πŸ“ Where:*\n<https://www.google.com/maps/place/The+Ballroom+Bowl/@43.6489907,-79.393127,16z/data=!3m1!4b1!4m6!3m5!1s0x882b34d014728d2f:0xfc73067902766632!8m2!3d43.6489907!4d-79.3905521!16s%2Fg%2F1xcbq7pd?entry=ttu&g_ep=EgoyMDI0MTAxNC4wIKXMDSoASAFQAw%3D%3D|*The Ballroom Bowl*> \n145 John St, \nToronto, ON M5V 2E4"
				},
				{
					"type": "mrkdwn",
					"text": "*⏰ Time:*\n5:30 PM - 9:30 PM"
				}
			]
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*:magic_wand::xero-unicorn: Theme:*\n_A Sprinkle of Magic_ – Our theme is inspired by the Xero Unicorn, embracing creativity, inclusivity, and diversity. Expect magical moments, and a fun-filled atmosphere!"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*:dress: Dress Code:*\nSmart casual – Show your personality, but no Xero tees or lanyards, please!\nIf you're feeling inspired by the theme, why not add a little 'Sprinkle of Magic' to your outfit? Think glitter, sparkles, or anything that shows off your creative side! (Totally optional, of course! ✨)"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*🚍 Transport Info:*\n*Public Transport:* Via TTC, Line 1 - The venue is a 6 min walk from Osgoode Station"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*🎀 :hamburger: Entertainment & Food:*\nPrepare for an activity filled evening with bowling, pool, delicious bites, refreshing drinks, and more! ✨🎢"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*🎟 RSVP Now:*\nPlease click <https://xero-wx.jomablue.com/reg/store/eoy_to|*here*> to RSVP!\nMake sure you RSVP by *14 November 2024*!"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":question::question:Got questions? See the <https://docs.google.com/document/d/1iygJFHgLBRSdAffNsg3PudZCA45w6Wit7xsFxNc_wKM/edit|FAQs> doc or post in the Slack channel.\nWe can’t wait to celebrate with you! :partying_face: :xero-love:"
			}
		}
	]
}
#include<iostream>
#include<queue>
using namespace std;
class node {
    public:
        int data;
        node* left;
        node* right;
    node(int d) {
        this -> data = d;
        this -> left = NULL;
        this -> right = NULL;
    }
};
node* buildTree(node* root) {
    cout << "Enter the data: " << endl;
    int data;
    cin >> data;
    root = new node(data);    
    if(data == -1) {
        return NULL;
    }
    cout << "Enter data for inserting in left of " << data << endl;
    root->left = buildTree(root->left);
    cout << "Enter data for inserting in right of " << data << endl;
    root->right = buildTree(root->right);
    return root;
}
void levelOrderTraversal(node* root) {
    queue<node*> q;
    q.push(root);
    q.push(NULL);
    while(!q.empty()) {
        node* temp = q.front();
        q.pop();
        if(temp == NULL) { 
            //purana level complete traverse ho chuka hai
            cout << endl;
            if(!q.empty()) { 
                //queue still has some child ndoes
                q.push(NULL);
            }  
        }
        else{
            cout << temp -> data << " ";
            if(temp ->left) {
                q.push(temp ->left);
            }
            if(temp ->right) {
                q.push(temp ->right);
            }
        }
    }
}
void inorder(node* root) {
    //base case
    if(root == NULL) {
        return ;
    }
    inorder(root->left);
    cout << root-> data << " ";
    inorder(root->right);
}
void preorder(node* root) {
    //base case
    if(root == NULL) {
        return ;
    }
    cout << root-> data << " ";
    preorder(root->left);
    preorder(root->right);
}
void postorder(node* root) {
    //base case
    if(root == NULL) {
        return ;
    }
    postorder(root->left);
    postorder(root->right);
    cout << root-> data << " ";
}
void buildFromLevelOrder(node* &root) {
    queue<node*> q;
    cout << "Enter data for root" << endl;
    int data ;
    cin >> data;
    root = new node(data);
    
    q.push(root);
    while(!q.empty()) {
        node* temp = q.front();
        q.pop();
        cout << "Enter left node for: " << temp->data << endl;
        int leftData;
        cin >> leftData;
        if(leftData != -1) {
            temp -> left = new node(leftData);
            q.push(temp->left);
        }
        cout << "Enter right node for: " << temp->data << endl;
        int rightData;
        cin >> rightData;
        if(rightData != -1) {
            temp -> right = new node(rightData);
            q.push(temp->right);
        }
    }
 }
int main() {
    node* root = NULL;
    buildFromLevelOrder(root);
    levelOrderTraversal(root);
    // 1 3 5 7 11 17 -1 -1 -1 -1 -1 -1 -1
    /*
    //creating a Tree
    root = buildTree(root);
    //1 3 7 -1 -1 11 -1 -1 5 17 -1 -1 -1 
    //level order
    cout << "Printing the level order tracersal output " << endl;
    levelOrderTraversal(root);
    cout << "inorder traversal is:  ";
    inorder(root); 
    cout << endl << "preorder traversal is:  ";
    preorder(root); 
    cout << endl << "postorder traversal is:  ";
    postorder(root); 
    */
    return 0;
}
apt update
apt install libpve-network-perl
1.- Instalar PostgreSQL:
pkg install postgresql

2.-Inicializar la Base de Datos en un Directorio EspecΓ­fico:
initdb /directorio en termux

3.-Iniciar el Servidor de PostgreSQL:
pg_ctl -D $PREFIX/var/lib/postgresql start

4.-Parar el Servidor de PostgreSQL:
pg_ctl -D $PREFIX/var/lib/postgresql stop

5.-Crear una Base de Datos:
createdb nombre de la base de datos

6.-borrar la base de datos 
dropdb nombre de la base de datos

7.-Acceder a la Consola de PostgreSQL: Para interactuar con la base de datos, puedes acceder a la consola de PostgreSQL con:
psql -U postgres

8.-Listar Bases de Datos: Una vez dentro de la consola de PostgreSQL, puedes listar todas las bases de datos con:
\l

9.-Conectarse a una Base de Datos: Para conectarte a una base de datos especΓ­fica, usa:
\c nombre_de_la_base_de_datos

10.-Crear un Usuario: Para crear un nuevo usuario en PostgreSQL, usa:
CREATE USER nombre_usuario WITH PASSWORD 'tu_contraseΓ±a';

11.-Otorgar Privilegios a un Usuario: Para otorgar privilegios a un usuario sobre una base de datos, usa:
GRANT ALL PRIVILEGES ON DATABASE nombre_de_la_base_de_datos TO nombre_usuario;

12.-DROP USER nombre_usuario;
DROP USER nombre_usuario;

13.- salir de la consola
\q o exit
body{
    background-image: url("img_tree.gif");
    background-repeat: no-repeat;
    background-attachment: fixed;
}
  1<style>
  2    /* Configurable Variables */
  3    :root {
  4        --bar-width: 30px; /* Width of all bars */
  5        --bar-height: 2px; /* Height/Thickness of all bars */
  6        --bar-color: #000; /* Default color of bars */
  7        --hover-color: #ff0050; /* Color on hover */
  8        --active-color: #0000ff; /* Color when the menu is active (close icon) */
  9        --bar-gap: 8px; /* Gap between bars */
 10Β 
 11        --bg-normal: #fff; /* Background color when idle */
 12        --bg-hover: #fff; /* Background color on hover */
 13        --bg-active: #fff; /* Background color when active */
 14    }
 15Β 
 16    /* Hide Elementor's default open and close icons */
 17    .elementor-menu-toggle__icon--open,
 18    .elementor-menu-toggle__icon--close {
 19        display: none;
 20    }
 21Β 
 22    /* Custom styles for the toggle button */
 23    .elementor-menu-toggle {
 24        position: relative;
 25        width: var(--bar-width);
 26        height: calc(var(--bar-height) * 3 + var(--bar-gap) * 2); /* Ensure height includes bars and gaps */
 27        cursor: pointer;
 28        background-color: var(--bg-normal); /* Default background color */
 29        transition: background-color 0.3s ease;
 30    }
 31Β 
 32    /* Top, middle, and bottom bars using pseudo-elements */
 33    .elementor-menu-toggle:before,
 34    .elementor-menu-toggle:after,
 35    .elementor-menu-toggle .middle-bar {
 36        content: '';
 37        display: block;
 38        width: 100%;
 39        height: var(--bar-height);
 40        background-color: var(--bar-color);
 41        position: absolute;
 42        left: 0;
 43        transition: all 0.3s ease;
 44    }
 45Β 
 46    /* Top bar */
 47    .elementor-menu-toggle:before {
 48        top: 0; /* Position at the top */
 49    }
 50Β 
 51    /* Middle bar */
 52    .elementor-menu-toggle .middle-bar {
 53        top: 50%; /* Center the middle bar */
 54        transform: translateY(-50%);
 55    }
 56Β 
 57    /* Bottom bar */
 58    .elementor-menu-toggle:after {
 59        bottom: 0; /* Position at the bottom */
 60    }
 61Β 
 62    /* Hover state: change the color of the bars and background to hover color */
 63    .elementor-menu-toggle:hover {
 64        background-color: var(--bg-hover);
 65    }
 66Β 
 67    .elementor-menu-toggle:hover:before,
 68    .elementor-menu-toggle:hover:after,
 69    .elementor-menu-toggle:hover .middle-bar {
 70        background-color: var(--hover-color);
 71    }
 72Β 
 73    /* When the menu is active: change background color and transform top/bottom bars to form an 'X' */
 74    .elementor-menu-toggle.elementor-active {
 75        background-color: var(--bg-active);
 76    }
 77Β 
 78    .elementor-menu-toggle.elementor-active:before {
 79        transform: translateY(calc(var(--bar-gap) + var(--bar-height))) rotate(45deg); /* Rotate top bar */
 80        background-color: var(--active-color);
 81    }
 82Β 
 83    .elementor-menu-toggle.elementor-active:after {
 84        transform: translateY(calc(-1 * (var(--bar-gap) + var(--bar-height)))) rotate(-45deg); /* Rotate bottom bar */
 85        background-color: var(--active-color);
 86    }
 87Β 
 88    .elementor-menu-toggle.elementor-active .middle-bar {
 89        opacity: 0; /* Hide middle bar when active */
 90    }
 91</style>
 92Β 
 93<script>
 94jQuery(document).ready(function($) {
 95    // Check if the menu toggle exists
 96    if ($('.elementor-menu-toggle').length) {
 97        // Append the middle bar span inside the menu toggle
 98        $('.elementor-menu-toggle').append('<span class="middle-bar"></span>');
 99    }
100});
101</script>
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":star: What's on in Melbourne this week! :star:"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n\n Hey Melbourne, happy Monday! Please see below for what's on this week. "
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": "Xero CafΓ© :coffee:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n :new-thing: *This week we are offering:* \n\n Dotty Treasures, Almond Crescents, and Lemon Yoyos (Gluten Free) \n\n *Weekly CafΓ© Special*: _ Spicy Ginger Latte_"
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": " Wednesday, 23rd October :calendar-date-23:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n\n:cake: *Afternoon Tea*: From *2pm* in the L3 kitchen + breakout space! \n\n:massage:*Wellbeing - Pilates*: Confirm your spot <https://docs.google.com/spreadsheets/d/1iKMQtSaawEdJluOmhdi_r_dAifeIg0JGCu7ZSPuwRbo/edit?gid=0#gid=0/|*here*>. Please note we have a maximum of 15 participants per class, a minimum notice period of 2 hours is required if you can no longer attend."
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": "Thursday, 24th October :calendar-date-24:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":breakfast: *Breakfast*: Provided by *Kartel Catering* from *8:30am - 10:30am* in the Wominjeka Breakout Space.\n\n"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*Later this month:* :rocket-kid:We have our Haunted Hackathon Themed Social+ on the 31st of October! :jack_o_lantern: \n\n *🎟 RSVP to our EOY Event Now:*\nPlease click <https://xero-wx.jomablue.com/reg/store/eoy_mel|here> to RSVP! \nMake sure you RSVP by *_14th November 2024_* :party-wx:"
			}
		}
	]
}
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.models.chat_message import ChatMessage
from msgraph.generated.models.item_body import ItemBody
from msgraph.generated.models.body_type import BodyType
from msgraph.generated.models.chat_message_attachment import ChatMessageAttachment
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = ChatMessage(
	subject = None,
	body = ItemBody(
		content_type = BodyType.Html,
		content = "<attachment id=\"74d20c7f34aa4a7fb74e2b30004247c5\"></attachment>",
	),
	attachments = [
		ChatMessageAttachment(
			id = "74d20c7f34aa4a7fb74e2b30004247c5",
			content_type = "application/vnd.microsoft.card.thumbnail",
			content_url = None,
			content = "{\r\n  \"title\": \"This is an example of posting a card\",\r\n  \"subtitle\": \"<h3>This is the subtitle</h3>\",\r\n  \"text\": \"Here is some body text. <br>\r\nAnd a <a href=\"http://microsoft.com/\">hyperlink</a>. <br>\r\nAnd below that is some buttons:\",\r\n  \"buttons\": [\r\n    {\r\n      \"type\": \"messageBack\",\r\n      \"title\": \"Login to FakeBot\",\r\n      \"text\": \"login\",\r\n      \"displayText\": \"login\",\r\n      \"value\": \"login\"\r\n    }\r\n  ]\r\n}",
			name = None,
			thumbnail_url = None,
		),
	],
)

result = await graph_client.teams.by_team_id('team-id').channels.by_channel_id('channel-id').messages.post(request_body)


# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.models.chat_message import ChatMessage
from msgraph.generated.models.item_body import ItemBody
from msgraph.generated.models.body_type import BodyType
from msgraph.generated.models.chat_message_attachment import ChatMessageAttachment
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = ChatMessage(
	body = ItemBody(
		content_type = BodyType.Html,
		content = "Here's the latest budget. <attachment id=\"153fa47d-18c9-4179-be08-9879815a9f90\"></attachment>",
	),
	attachments = [
		ChatMessageAttachment(
			id = "153fa47d-18c9-4179-be08-9879815a9f90",
			content_type = "reference",
			content_url = "https://m365x987948.sharepoint.com/sites/test/Shared%20Documents/General/test%20doc.docx",
			name = "Budget.docx",
		),
	],
)

result = await graph_client.teams.by_team_id('team-id').channels.by_channel_id('channel-id').messages.post(request_body)


# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.models.chat_message import ChatMessage
from msgraph.generated.models.item_body import ItemBody
from msgraph.generated.models.body_type import BodyType
from msgraph.generated.models.chat_message_attachment import ChatMessageAttachment
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = ChatMessage(
	body = ItemBody(
		content_type = BodyType.Html,
		content = "Testing with file share link. <attachment id=\"668f7fa8-8129-4de7-b32b-fe1b442e6ef1\"></attachment>",
	),
	attachments = [
		ChatMessageAttachment(
			id = "668f7fa8-8129-4de7-b32b-fe1b442e6ef1",
			content_type = "reference",
			content_url = "https://teamsgraph-my.sharepoint.com/:w:/g/personal/test_teamsgraph_onmicrosoft_com/Eah_j2YpgedNsyv-G0QubvEBma6Sd_76UtYkXwoJ-nYVEg?e=0H2Ibm",
		),
	],
)

result = await graph_client.teams.by_team_id('team-id').channels.by_channel_id('channel-id').messages.post(request_body)


HTTP/1.1 201 Created
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#teams('fbe2bf47-16c8-47cf-b4a5-4b9b187c508b')/channels('19%3A4a95f7d8db4c4e7fae857bcebe0623e6%40thread.tacv2')/messages/$entity",
    "id": "1616991899452",
    "replyToId": null,
    "etag": "1616991899452",
    "messageType": "message",
    "createdDateTime": "2021-03-29T04:24:59.452Z",
    "lastModifiedDateTime": "2021-03-29T04:24:59.452Z",
    "lastEditedDateTime": null,
    "deletedDateTime": null,
    "subject": null,
    "summary": null,
    "chatId": null,
    "importance": "normal",
    "locale": "en-us",
    "webUrl": "https://teams.microsoft.com/l/message/19%3A4a95f7d8db4c4e7fae857bcebe0623e6%40thread.tacv2/1616991899452?groupId=fbe2bf47-16c8-47cf-b4a5-4b9b187c508b&tenantId=2432b57b-0abd-43db-aa7b-16eadd115d34&createdTime=1616991899452&parentMessageId=1616991899452",
    "policyViolation": null,
    "eventDetail": null,
    "from": {
        "application": null,
        "device": null,
        "user": {
            "@odata.type": "#microsoft.graph.teamworkUserIdentity",
            "id": "8ea0e38b-efb3-4757-924a-5f94061cf8c2",
            "displayName": "Robin Kline",
            "userIdentityType": "aadUser",
            "tenantId": "e61ef81e-8bd8-476a-92e8-4a62f8426fca"
        }
    },
    "body": {
        "contentType": "html",
        "content": "Here's the latest budget. <attachment id=\"153fa47d-18c9-4179-be08-9879815a9f90\"></attachment>"
    },
    "channelIdentity": {
        "teamId": "fbe2bf47-16c8-47cf-b4a5-4b9b187c508b",
        "channelId": "19:4a95f7d8db4c4e7fae857bcebe0623e6@thread.tacv2"
    },
    "attachments": [
        {
            "id": "153fa47d-18c9-4179-be08-9879815a9f90",
            "contentType": "reference",
            "contentUrl": "https://m365x987948.sharepoint.com/sites/test/Shared%20Documents/General/test%20doc.docx",
            "content": null,
            "name": "Budget.docx",
            "thumbnailUrl": null
        }
    ],
    "mentions": [],
    "reactions": [],
    "messageHistory": []
}
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": "✨ :magic_wand::xero-unicorn: End of Year Celebration – A Sprinkle of Magic! :xero-unicorn: :magic_wand:✨",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*Hi Brisbane!* \nGet ready to wrap up the year with a sprinkle of magic and a lot of fun at our End of Year Event! Here’s everything you need to know about our :"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"fields": [
				{
					"type": "mrkdwn",
					"text": "*πŸ“… When:*\nThursday 21st November"
				},
				{
					"type": "mrkdwn",
					"text": "πŸ“ *Where:* *Theb Ball Park* - Shop 905.1, Portside Wharf, 39 Hercules St, Hamilton QLD 4007"
				},
				{
					"type": "mrkdwn",
					"text": "*⏰ Time:*\n4 PM - 8 PM"
				}
			]
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*:magic_wand::xero-unicorn: Theme:*\n_A Sprinkle of Magic_ – Our theme is inspired by the Xero Unicorn, embracing creativity, inclusivity, and diversity. Expect unique decor, magical moments, and a fun-filled atmosphere!"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*:dress: Dress Code:*\nSmart casual – Show your personality, but no Xero tees or lanyards, please!\nIf you're feeling inspired by the theme, why not add a little 'Sprinkle of Magic' to your outfit? Think glitter, sparkles, or anything that shows off your creative side! (Totally optional, of course! ✨)"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*🚍 Transport Info:* Via Bus route 300 from our office which will take 30 minutes or a 15 minute Uber"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*🎀 :hamburger: Entertainment & Food:*\nPrepare to enjoy a range of indoor baseball simulators, pool tables and darts. We have large food platters and drinks for you to enjoy✨🎢"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*🎟 RSVP Now:* Click <https://xero-wx.jomablue.com/reg/store/eoy_bri|here> to RSVP! \nMake sure you RSVP by *_Friday, 8th November 2024_*"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":question::question:Got questions? See the <https://docs.google.com/document/d/1iygJFHgLBRSdAffNsg3PudZCA45w6Wit7xsFxNc_wKM/edit|FAQs> doc or post in the Slack channel.\nWe can’t wait to celebrate with you! :partying_face: :xero-love:"
			}
		}
	]
}
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": "✨ :magic_wand::xero-unicorn: End of Year Celebration – A Sprinkle of Magic! :xero-unicorn: :magic_wand:✨",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*Hi Hawkes Bay!* \nGet ready to wrap up the year with a sprinkle of magic and a lot of fun at our End of Year Event! Here’s everything you need to know:"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"fields": [
				{
					"type": "mrkdwn",
					"text": "*:calendar-date-5: When:*\nFriday 6th December"
				},
				{
					"type": "mrkdwn",
					"text": "*πŸ“ Where:*\n<https://www.google.com/maps/place/Bluff+Hill+Bowling+Club/@-39.4804904,176.9200272,15z/data=!4m6!3m5!1s0x6d684d224f30331f:0xd0df86d9a6cf430c!8m2!3d-39.4804904!4d176.9200272!16s%2Fg%2F1tgn4y6_?entry=ttu&g_ep=EgoyMDI0MTAwMi4xIKXMDSoASAFQAw%3D%3D|*Bluff Hill Bowls Club*> \n36 Lighthouse Road, Bluff Hill, Napier"
				},
				{
					"type": "mrkdwn",
					"text": "*⏰ Time:*\n4:30 PM - 10:00 PM"
				}
			]
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*:magic_wand::xero-unicorn: Theme:*\n_A Sprinkle of Magic_ – Our theme is inspired by the Xero Unicorn, embracing creativity, inclusivity, and diversity. Expect unique decor, magical moments, and a fun-filled atmosphere!"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*:dress: Dress Code:*\nSmart casual – Show your personality, but no Xero tees or lanyards, please!\nIf you're feeling inspired by the theme, why not add a little 'Sprinkle of Magic' to your outfit? Think glitter, sparkles, or anything that shows off your creative side! (Totally optional, of course! ✨)"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*🎀 :hamburger: Entertainment & Food:*\nPrepare to be dazzled by live music, enchanting magic shows, cozy chill-out zones, delicious bites, refreshing drinks, and plenty of surprises! ✨🎢"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*🎟 RSVP Now:*\nPlease click <https://xero-wx.jomablue.com/reg/store/eoy_hwk|*here*> to RSVP! \nMake sure you RSVP by 22 November 2024."
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":question::question:Got questions? See the <https://docs.google.com/document/d/1iygJFHgLBRSdAffNsg3PudZCA45w6Wit7xsFxNc_wKM/edit|FAQs> doc or post in your local Slack channel.\nWe can’t wait to celebrate with you! :partying_face: :xero-love:"
			}
		}
	]
}
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": "✨ :magic_wand::xero-unicorn: End of Year Celebration – A Sprinkle of Magic! :xero-unicorn: :magic_wand:✨",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*Hi Canberra!* \nGet ready to wrap up the year with a sprinkle of magic and a lot of fun at our End of Year Event! Here’s everything you need to know:"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"fields": [
				{
					"type": "mrkdwn",
					"text": "*:calendar-date-5: When:*\nFriday 5th November"
				},
				{
					"type": "mrkdwn",
					"text": "*πŸ“ Where:*\n<https://www.google.com/maps/place/Reload+Bar+%26+Games/@-35.2791524,149.1295097,15z/data=!4m6!3m5!1s0x6b164d68637bb8b9:0xde288cf674673148!8m2!3d-35.2791524!4d149.1295097!16s%2Fg%2F11b7c7fbkp?entry=ttu&g_ep=EgoyMDI0MTAxNS4wIKXMDSoASAFQAw%3D%3D|*Reload Bar*> \n34/38 Northbourne Ave, Canberra"
				},
				{
					"type": "mrkdwn",
					"text": "*⏰ Time:*\n5 PM - 9 PM"
				}
			]
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*:magic_wand::xero-unicorn: Theme:*\n_A Sprinkle of Magic_ – Our theme is inspired by the Xero Unicorn, embracing creativity, inclusivity, and diversity. Expect unique decor, magical moments, and a fun-filled atmosphere!"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*:dress: Dress Code:*\nSmart casual – Show your personality, but no Xero tees or lanyards, please!\nIf you're feeling inspired by the theme, why not add a little 'Sprinkle of Magic' to your outfit? Think glitter, sparkles, or anything that shows off your creative side! (Totally optional, of course! ✨)"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*🎀 :hamburger: Entertainment & Food:*\nPrepare to be dazzled by live music, enchanting magic shows, cozy chill-out zones, delicious bites, refreshing drinks, and plenty of surprises! ✨🎢"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*🎟 RSVP Now:*\nPlease click <https://xero-wx.jomablue.com/reg/store/eoy_cbr|*here*> to RSVP! \nMake sure you RSVP by 21 November 2024."
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":question::question:Got questions? See the <https://docs.google.com/document/d/1iygJFHgLBRSdAffNsg3PudZCA45w6Wit7xsFxNc_wKM/edit|FAQs> doc or post in your local Slack channel.\nWe can’t wait to celebrate with you! :partying_face: :xero-love:"
			}
		}
	]
}
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": "✨ :magic_wand::xero-unicorn: End of Year Celebration – A Sprinkle of Magic! :xero-unicorn: :magic_wand:✨",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*Hi Sydney!* \nGet ready to wrap up the year with a sprinkle of magic and a lot of fun at our End of Year Event! Here’s everything you need to know about our :"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"fields": [
				{
					"type": "mrkdwn",
					"text": "*πŸ“… When:*\nThursday 28th November"
				},
				{
					"type": "mrkdwn",
					"text": "πŸ“ *Where:* King Street Whalf for a scenic boat tour around Sydney Harbour!"
				},
				{
					"type": "mrkdwn",
					"text": "*⏰ Time:*\n1 PM - 5 PM"
				}
			]
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*:magic_wand::xero-unicorn: Theme:*\n_A Sprinkle of Magic_ – Our theme is inspired by the Xero Unicorn, embracing creativity, inclusivity, and diversity. Expect unique decor, magical moments, and a fun-filled atmosphere!"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*:dress: Dress Code:*\nSmart casual – Show your personality, but no Xero tees or lanyards, please!\nIf you're feeling inspired by the theme, why not add a little 'Sprinkle of Magic' to your outfit? Think glitter, sparkles, or anything that shows off your creative side! (Totally optional, of course! ✨)"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*🚍 Transport Info:* King Street Whalf is 400m and 6 minute walk from the office"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*🎀 :hamburger: Entertainment & Food:*\nPrepare to be dazzled by a icnoic scenice boat tour around the harbour, you can expect a live dj, food, drinks and lots of magical memories made✨🎢"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*🎟 RSVP Now:* Click <https://xero-wx.jomablue.com/reg/store/eoy_syd|here> to RSVP! \nMake sure you RSVP by *_Friday, 8th November 2024_*"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":question::question:Got questions? See the <https://docs.google.com/document/d/1iygJFHgLBRSdAffNsg3PudZCA45w6Wit7xsFxNc_wKM/edit|FAQs> doc or post in the Slack channel.\nWe can’t wait to celebrate with you! :partying_face: :xero-love:"
			}
		}
	]
}
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":star: Xero Boost Days! :star:"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Please see below for what's on this week! "
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":calendar-date-6: Wednesday, 6th November",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n:coffee: *CafΓ© Partnership*: Enjoy free coffee and cafΓ©-style beverages from our partner, *Elixir Sabour*, which used to be called Hungry Bean.\n:breakfast: *Morning Tea*: Provided by *Elixir Sabour* from *9am* in the All Hands.\n:massage:*Wellbeing*: Crossfit class at *Be Athletic* from 11am."
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":calendar-date-7: Thursday, 7th November",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":coffee: *CafΓ© Partnership*: CafΓ© Partnership: Enjoy coffee and cafΓ©-style beverages from our partner, *Elixir Sabour*, which used to be called Hungry Bean.\n:late-cake: *Lunch*: Provided by *Elixir Sabour* from *12pm* in the All Hands."
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Stay tuned to this channel for more details, check out the <https://calendar.google.com/calendar/u/0/r?cid=Y185aW90ZWV0cXBiMGZwMnJ0YmtrOXM2cGFiZ0Bncm91cC5jYWxlbmRhci5nb29nbGUuY29t|*Sydney Social Calendar*>, and get ready to Boost your workdays!\n\nLove,\nWX Team :party-wx:"
			}
		}
	]
}
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":star: Xero Boost Days! :star:"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Please see below for what's on this week! "
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":calendar-date-11: Monday, 11th November",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n:coffee: *CafΓ© Partnership*: Enjoy free coffee and cafΓ©-style beverages from our Cafe partner *Edwards*.\n:Lunch: *Lunch*: from *12pm* in the kitchen.\n:massage:*Wellbeing*: Pilates at *SP Brisbane City* is bookable every Monday! Watch this channel on how to book."
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":calendar-date-13: Wednesday, 13th November",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":coffee: *CafΓ© Partnership*: Enjoy free coffee and cafΓ©-style beverages from our Cafe partner *Edwards*.\n:lunch: *Morning Tea*:from *10am* in the kitchen!"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Stay tuned to this channel for more details, check out the <https://calendar.google.com/calendar/u/0?cid=Y19uY2M4cDN1NDRsdTdhczE0MDhvYjZhNnRjb0Bncm91cC5jYWxlbmRhci5nb29nbGUuY29t|*Brisbane Social Calendar*>, and get ready to Boost your workdays!\n\nLove,\nWX Team :party-wx:"
			}
		}
	]
}
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":star: Xero Boost Days! :star:"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Canberra! Please see below for what's on this week! "
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":calendar-date-13: Wednesday, 14th November",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n:Lunch: *Lunch*: Provided in our suite from *12pm*."
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Stay tuned to this channel for more details, check out the <https://calendar.google.com/calendar/u/0?cid=Y19jYzU3YWJkZTE4ZTE0YzVlYTYxMGU4OThjZjRhYWQ0MTNhYmIzMDBjZjBkMzVlNDg0M2M5NDQ4NDk3NDAyYjkyQGdyb3VwLmNhbGVuZGFyLmdvb2dsZS5jb20|*Canberra Social Calendar*>, and get ready to Boost your workdays!\n\nLove,\nWX Team :party-wx:"
			}
		}
	]
}
#include <iostream>
using namespace std;

// Function to partition the array and return the pivot index.
int partition(int arr[], int low, int high) {
    int pivot = arr[high];
    int swapIndex = low-1;
    for(int currentIndex = low ; currentIndex<high; currentIndex++){
        if(arr[currentIndex] <= pivot){
            swapIndex++;
            std::swap(arr[swapIndex] ,arr[currentIndex]);
        }
    }
    std::swap(arr[swapIndex+1] ,arr[high]);
    return swapIndex+1;
}

void displayArray(int arr[], int n) {
    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;
}
// Function to recursively sort the array using Quick Sort.
void quickSort(int arr[], int low, int high) {
    if(low<high){
        int pivotIndex = partition(arr,low,high);
        quickSort(arr,low,pivotIndex-1);
        quickSort(arr,pivotIndex+1,high);
    }
}

// Function to initiate the Quick Sort process.
void processQuickSort(int arr[], int n) {
    if(n>1){
        quickSort(arr,0,n-1);
    }
}


// Function to dynamically allocate an array and fill it with random values.
void fillDynamicArrayWithRandomValues(int** arr, int* n) {
    cout << "Enter the size of the array: ";
    cin >> *n;
    *arr = new int[*n];
    srand(time(0)); // Seed for random number generation
    for (int i = 0; i < *n; i++) {
        (*arr)[i] = rand() % 1000; // Fill with random numbers between 0 and 999
    }
}

int main() {
    int* arr;
    int n;
    fillDynamicArrayWithRandomValues(&arr, &n);
    cout << "Unsorted array: ";
    displayArray(arr, n);
    processQuickSort(arr, n);
    cout << "Sorted array: ";
    displayArray(arr, n);
    delete[] arr; // Deallocate dynamically allocated memory
    return 0;
}
function removeFileExtension(filename) {
  return filename.split('.').slice(0, -1).join('.') || filename;
}

// Example usage:
const filename = "document.txt";
const result = removeFileExtension(filename);
console.log(result); // Output: "document"
#include <iostream>
using namespace std;

class node {
public:
    int data;
    node* left;
    node* right;

    node(int d) {
        this->data = d;
        this->left = NULL;
        this->right = NULL;
    }
};

node* buildTree() {
    cout << "Enter the data (-1 for no node): "<<endl;
    int data;
    cin >> data;

    if (data == -1) {
        return NULL;
    }

    node* root = new node(data); // Create a new node

    cout << "Enter data for left child of " << data << ": "<<endl;
    root->left = buildTree();
    cout << "Enter data for right child of " << data << ": "<<endl;
    root->right = buildTree();
    
    return root;
}
 
int main() {
    node* root = buildTree(); // Create the tree starting from root
    return 0;
}
#include <iostream>
using namespace std;

struct node {
    int data;
    struct node* next;
};

void add_at_end(struct node *head , int data){
    struct node *ptr, *temp;
    temp = new node; // Allocate new node
    temp->data = data; // Set data for the new node
    temp->next = NULL; // Initialize next pointer

    if (head == NULL) {
        head = temp; // If the list is empty
        return;
    }

    ptr = head; // Start from the head
    while (ptr->next != NULL) {
        ptr = ptr->next;
    }
    ptr->next = temp; // Link the last node to the new node
}

void print_data(struct node* head) {
    if (head == NULL) {
        cout << "Linked list is empty." << endl;
        return;
    }

    struct node* ptr = head;
    while (ptr != NULL) {
        cout << ptr->data << " ";
        ptr = ptr->next;
    }
    cout << endl; // Print a newline at the end
}

int main() {
    // Create the head node
    node* head = new node;
    head->data = 10;
    head->next = NULL;

    // Create the second node
    node* second = new node;
    second->data = 45;
    second->next = NULL;
    head->next = second;

    // Create the third node
    node* third = new node;
    third->data = 30;
    third->next = NULL;
    head->next->next = third; // Link second to third

    // Print the linked list before adding
    cout << "Linked list before adding: ";
    print_data(head);

    // Add a new node at the end
    add_at_end(head, 67);

    // Print the updated linked list
    cout << "Updated linked list after adding 67: ";
    print_data(head);

    // Clean up allocated memory
    delete third; // Delete in reverse order
    delete second;
    delete head;

    return 0;
}
#include <iostream>
using namespace std;

struct node {
    int data;
    struct node* next;
};

void print_data(struct node* head) {
    if (head == NULL) {
        cout << "Linked list is empty." << endl;
        return; // Return early if the list is empty
    }
    
    struct node* ptr = head; // Initialize the pointer to head
    while (ptr != NULL) {
        cout << ptr->data << " ";
        ptr = ptr->next; // Move to the next node
    }
    cout << endl; // Print a newline at the end
}

int main() {
    // Create the head node
    node* head = new node;
    head->data = 10;
    head->next = NULL;
   // cout << "1st node is " << head->data << endl;

    // Create the second node
    node* second = new node;
    second->data = 45;
    second->next = NULL;
    head->next = second;
   // cout << "2nd node is " << second->data << endl;

    // Create the third node
    node* third = new node;
    third->data = 30;
    third->next = NULL;
    head->next->next = third; // Link second to third
   // cout << "3rd node is " << third->data << endl;

    // Print the linked list
    cout << "Linked list: ";
    print_data(head);

    // Clean up allocated memory
    delete third; // Delete in reverse order
    delete second;
    delete head;

    return 0;
}
#include <iostream>
using namespace std;

struct node {
    int data;
    struct node* next;
};

void print_data(struct node* head) {
    if (head == NULL) {
        cout << "Linked list is empty." << endl;
        return; // Return early if the list is empty
    }
    
    struct node* ptr = head; // Initialize the pointer to head
    while (ptr != NULL) {
        cout << ptr->data << " ";
        ptr = ptr->next; // Move to the next node
    }
    cout << endl; // Print a newline at the end
}

int main() {
    // Create the head node
    node* head = new node;
    head->data = 10;
    head->next = NULL;
   // cout << "1st node is " << head->data << endl;

    // Create the second node
    node* second = new node;
    second->data = 45;
    second->next = NULL;
    head->next = second;
   // cout << "2nd node is " << second->data << endl;

    // Create the third node
    node* third = new node;
    third->data = 30;
    third->next = NULL;
    head->next->next = third; // Link second to third
   // cout << "3rd node is " << third->data << endl;

    // Print the linked list
    cout << "Linked list: ";
    print_data(head);

    // Clean up allocated memory
    delete third; // Delete in reverse order
    delete second;
    delete head;

    return 0;
}
#include <iostream>
using namespace std;

struct node {
    int data;
    struct node* next;
};

// Function to count nodes in the linked list
void count_of_nodes(struct node* head) {
    int count = 0; // intial point 
    
    struct node* ptr = head; // Initialize ptr to head

    if (head == NULL) {
        cout << "Linked list is empty" << endl;
        return;
    }

    while (ptr != NULL) {
        count++;
        ptr = ptr->next; // Move to the next node
    }
    cout << "Count of nodes: " << count << endl;
}

int main() {
    // Create the head node
    node* head = new node;
    head->data = 10;
    head->next = NULL;
    cout << "1st node is " << head->data << endl;

    // Create the second node
    node* second = new node;
    second->data = 20;
    second->next = NULL;
    head->next = second;
    cout << "2nd node is " << second->data << endl;

    // Create the third node
    node* third = new node;
    third->data = 30;
    third->next = NULL;
    head->next->next = third; // Link second to third
    cout << "3rd node is " << third->data << endl;

    // Count the nodes
    count_of_nodes(head);

    // Clean up allocated memory
    delete head;
    delete second;
    delete third;

    return 0;
}
#include <iostream>
#include <vector>
using namespace std;

// Function to merge two sorted halves of the array into a single sorted array.
void merge(int arr[], int left, int mid, int right) {
    int n= left+ (right-left)/2;
    vector<int> tempArray;
    int start = left;
    int start2= mid+1;
    if(arr[mid]<=arr[start2]){
        return;
    }
    while(start<=mid && start2<=right){
        if(arr[start]<=arr[start2]){
            tempArray.push_back(arr[start]);
            start++;
        }else{
            tempArray.push_back(arr[start2]);
            start2++;
        }
    }

    while (start <= mid) {
        tempArray.push_back(arr[start]);
        start++;
    }

    while (start2 <= right) {
        tempArray.push_back(arr[start2]);
        start2++;
    }
    for(int i=left;i<=right;i++){
        arr[i] = tempArray[i-left];
    }
}

// Function to recursively divide the array and merge the sorted halves.
void mergeSort(int arr[], int left, int right) {
    if (left >= right)
        return;

    int mid = left + (right - left) / 2;
    mergeSort(arr, left, mid);
    mergeSort(arr, mid + 1, right);
    merge(arr, left, mid, right);
}

// Function to initiate the merge sort process.
void processMergeSort(int arr[], int n) {
    if(n>1){
        mergeSort(arr,0,n-1);
    }
}

void displayArray(int arr[], int n) {
    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;
}

// Function to dynamically allocate an array and fill it with random values.
void fillDynamicArrayWithRandomValues(int** arr, int* n) {
    cout << "Enter the size of the array: ";
    cin >> *n;
    *arr = new int[*n];
    srand(time(0)); // Seed for random number generation
    for (int i = 0; i < *n; i++) {
        (*arr)[i] = rand() % 1000; // Fill with random numbers between 0 and 999
    }
}

int main() {
    int* arr;
    int n;
    fillDynamicArrayWithRandomValues(&arr, &n);
    cout << "Unsorted array: ";
    displayArray(arr, n);
    processMergeSort(arr, n);
    cout << "Sorted array: ";
    displayArray(arr, n);
    delete[] arr; // Deallocate dynamically allocated memory
    return 0;
}
#include <stdio.h>
#include <limits.h>

#define MAX 100

int w[MAX][MAX], c[MAX][MAX], r[MAX][MAX];

void obst(int p[], int q[], int n);
int find(int c[][MAX], int r[][MAX], int i, int j);
void inorder(int r[][MAX], int i, int j, int p[]);

void obst(int p[], int q[], int n) {
    int i, j, m, k;

    // Initialize for empty and single keys
    for (i = 0; i <= n; i++) {
        w[i][i] = q[i];
        c[i][i] = 0;
        r[i][i] = 0;
    }

    // Initialize for trees with two keys
    for (i = 0; i < n; i++) {
        w[i][i + 1] = q[i] + q[i + 1] + p[i + 1];
        c[i][i + 1] = q[i] + q[i + 1] + p[i + 1];
        r[i][i + 1] = i + 1;
    }

    // Handle the last dummy key
    w[n][n] = q[n];
    c[n][n] = 0;
    r[n][n] = 0;

    // Dynamic programming to calculate costs
    for (m = 2; m <= n; m++) { // m is the size of the subtree
        for (i = 0; i <= n - m; i++) {
            j = m + i;
            w[i][j] = w[i][j - 1] + q[j] + p[j];
            k = find(c, r, i, j);
            c[i][j] = w[i][j] + c[i][k - 1] + c[k][j];
            r[i][j] = k;
        }
    }

    // Print cost and weight tables
    for (i = 0; i <= n; i++) {
        for (int j = 0; j <= n; j++) {
            printf("w[%d][%d] :%d\t", i, j, w[i][j]);
        }
        printf("\n");
        for (int j = 0; j <= n; j++) {
            printf("c[%d][%d] :%d\t", i, j, c[i][j]);
        }
        printf("\n");
    }

    // Print the maximum cost of the OBST
    printf("Maximum cost of the OBST: %d\n", c[0][n]);
}

int find(int c[][MAX], int r[][MAX], int i, int j) {
    int min = INT_MAX, l;
    for (int m = r[i][j - 1]; m <= r[i + 1][j]; m++) {
        if (c[i][m - 1] + c[m][j] < min) {
            min = c[i][m - 1] + c[m][j];
            l = m;
        }
    }
    return l;
}

void inorder(int r[][MAX], int i, int j, int p[]) {
    if (i < j) {
        int root = r[i][j];
        inorder(r, i, root - 1, p);  
        printf("%d ", p[root]);      // Visit root (keys are 1-indexed)
        inorder(r, root, j, p);       
    }
}

int main() {
    int p[MAX], q[MAX], i, n;
    printf("Enter size: ");
    scanf("%d", &n);

    printf("Enter probabilities of p (0 is assumed for p[0]):\n");
    for (i = 1; i <= n; i++) {
        printf("p[%d]: ", i);
        scanf("%d", &p[i]);
    }
    p[0] = 0; // Probability for p[0] (dummy key)

    printf("Enter probabilities of q (for q[0] to q[%d]):\n", n);
    for (i = 0; i <= n; i++) {
        printf("q[%d]: ", i);
        scanf("%d", &q[i]);
    }

    printf("Calculating OBST:\n");
    obst(p, q, n);

    printf("Inorder traversal of the OBST:\n");
    inorder(r, 0, n, p);
    printf("\n");

    return 0;
}
#include <iostream>
#include <cstdlib> // for rand() and srand()
#include <ctime> // for time()

using namespace std;

// Function to merge two sorted sub-arrays in place.
void inPlaceMerge(int arr[], int left, int mid, int right) {
    int start2= mid+1;
    if(arr[mid]<=arr[start2]){
        return;
    }

    while(left<=mid && start2<=right){
        if(arr[left]<=arr[start2]){
            left++;
        }else{
            int swpaData = arr[start2];
            int index = start2;
             while (index != left) {
                arr[index] = arr[index - 1];
                index--;
            }
            arr[left] = swpaData;
            left++;
            mid++;
            start2++;
        }
    }
}

// Function to recursively sort the array using Merge Sort.
void inPlaceMergeSort(int arr[], int left, int right) {
   if(left<right){
        int middle = left + (right - left )/ 2;
 
        // Sort first and second halves
        inPlaceMergeSort(arr, left, middle);
        inPlaceMergeSort(arr, middle + 1, right);
 
        inPlaceMerge(arr, left, middle, right);
   }
}

// Function to initiate the Merge Sort process.
void processInPlaceMergeSort(int arr[], int n) {
    if (n > 1) {
        inPlaceMergeSort(arr, 0, n - 1);
    }
}

void displayArray(int arr[], int n) {
    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;
}

// Function to dynamically allocate an array and fill it with random values.
void fillDynamicArrayWithRandomValues(int** arr, int* n) {
    cout << "Enter the size of the array: ";
    cin >> *n;
    *arr = new int[*n];
    srand(time(0)); // Seed for random number generation
    for (int i = 0; i < *n; i++) {
        (*arr)[i] = rand() % 1000; // Fill with random numbers between 0 and 999
    }
}

int main() {
    int* arr;
    int n;
    fillDynamicArrayWithRandomValues(&arr, &n);
    cout << "Unsorted array: ";
    displayArray(arr, n);
    processInPlaceMergeSort(arr, n);
    cout << "Sorted array: ";
    displayArray(arr, n);
    delete[] arr; // Deallocate dynamically allocated memory
    return 0;
}
package patterns;

import java.util.Scanner;

public class Patterns {

    public static void main(String[] args) {
        // Call the methods to print various patterns
        printPatterns();
        printHorizontalBars();
        printVerticalBars();
    }

    // Method to print different patterns
    public static void printPatterns() {
        System.out.println("printPatterns() method called....");

       // nested for loop to print the following pattern goes below:
        //    # # # # # # # #
        //	    # # # # # # #
        //	      # # # # # #
        //	        # # # # #
        //	          # # # #
        //	            # # #
        //	              # #
        //	                #
  
        // NOTE: You can copy the following nested-for loop structure and change it based on
        // each of the four patterns that you need to draw
        for (int row = 1; row <= 8; row++) {
            for (int col = 1; col <= 8; col++) {
                if (col <= 9 - row) {
                    System.out.print("# ");
                } else {
                    System.out.print("  "); // Print space for formatting
                }
            }
            System.out.println(); // Move to the next line
        }
        System.out.println(); // Extra space between patterns

        
        // Tested for loop to print the following pattern goes below:
        //    # # # # # # # #
        //	  # # # # # # #
        //	  # # # # # #
        //	  # # # # #
        //	  # # # #
        //	  # # #
        //	  # #
        //	  #
      
      
        for (int row = 1; row <= 8; row++) {
            for (int col = 1; col <= 8; col++) {
                if (row == 1 || row == 8 || col == 1 || col == 8) {
                    System.out.print("# ");
                } else {
                    System.out.print("  "); // Print space for formatting
                }
            }
            System.out.println(); // Move to the next line
        }
        System.out.println(); // Extra space between patterns

         // nested for loop to print the following pattern goes below:
        //(HINT: what do the #'s on the top and bottom have in common.  What is the
        // relationship between row and column values...plug in numbers for their location
        // to help find the answers to the logic you need to use..think in terms of the
        // row and column value)
        //
        //    # # # # # # # #
        //	    #         #
        //	      #     #
        //	        # #
        //	        # #
        //	      #     #
        //	    #         #
        //	  # # # # # # # #
        for (int row = 1; row <= 8; row++) {
            for (int col = 1; col <= 8; col++) {
                if (row == 1 || row == 8 || col == 1 || col == 8) {
                    System.out.print("# ");
                } else if (row == col) {
                    System.out.print("# ");
                } else {
                    System.out.print("  "); // Print space for formatting
                }
            }
            System.out.println(); // Move to the next line
        }
        System.out.println(); // Extra space between patterns

       
        for (int row = 1; row <= 8; row++) {
            for (int col = 1; col <= 8; col++) {
                if (row == 1 || row == 8) {
                    System.out.print("# ");
                } else if (col == 1 || col == 8) {
                    System.out.print("# ");
                } else if (row + col == 9) {
                    System.out.print("# ");
                } else {
                    System.out.print("  "); // Print space for formatting
                }
            }
            System.out.println(); // Move to the next line
        }
        System.out.println(); // Extra space between patterns
    }

    // Method to print horizontal bars based on user input
    public static void printHorizontalBars() {
        Scanner sc = new Scanner(System.in);
        int num1, num2, num3, num4;

        System.out.println("printHorizontalBars() method called....");
        System.out.println("Enter four integers:");

        // Read the integers from the user
        num1 = sc.nextInt();
        num2 = sc.nextInt();
        num3 = sc.nextInt();
        num4 = sc.nextInt();

        // Print horizontal bars based on the values
        printStars(num1);
        printStars(num2);
        printStars(num3);
        printStars(num4);
        System.out.println(); // Extra space after horizontal bars
    }

    // Helper method to print stars
    private static void printStars(int count) {
        for (int i = 0; i < count; i++) {
            System.out.print("* "); // Print each star with a space
        }
        System.out.println(); // Move to the next line after printing stars
    }

    // Method to print vertical bars based on user input
    public static void printVerticalBars() {
        Scanner sc = new Scanner(System.in);
        int num1, num2, num3, num4;

        System.out.println("printVerticalBars() method called....");
        System.out.println("Enter four integers:");

        // Read the integers from the user
        num1 = sc.nextInt();
        num2 = sc.nextInt();
        num3 = sc.nextInt();
        num4 = sc.nextInt();

        // Find the maximum height of the bars
        int max = Math.max(num1, Math.max(num2, Math.max(num3, num4)));

        // Print vertical bars
        for (int i = max; i > 0; i--) {
            if (i <= num1) System.out.print("** "); // Building 1
            else System.out.print("   "); // Space for Building 1

            if (i <= num2) System.out.print("** "); // Building 2
            else System.out.print("   "); // Space for Building 2

            if (i <= num3) System.out.print("** "); // Building 3
            else System.out.print("   "); // Space for Building 3

            if (i <= num4) System.out.print("** "); // Building 4
            else System.out.print("   "); // Space for Building 4

            System.out.println(); // Move to the next line after each level
        }

        // Print a row of dashes at the bottom
        System.out.println("------------------------------");
    }
}
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":star: What's on in Melbourne this week! :star:"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n\n Hey Melbourne, happy Monday! Please see below for what's on this week. "
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": "Xero CafΓ© :coffee:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n :new-thing: *This week we are offering:* \n\n Dotty Treasures, Almond Crescents, and Lemon Yoyos (Gluten Free) \n\n *Weekly CafΓ© Special*: _ Spicy Ginger Latte_"
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": " Wednesday, 23rd October :calendar-date-23:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n\n:cake: *Afternoon Tea*: From *2pm* in the L3 kitchen + breakout space! \n\n:massage:*Wellbeing - Pilates*: Confirm your spot <https://docs.google.com/spreadsheets/d/1iKMQtSaawEdJluOmhdi_r_dAifeIg0JGCu7ZSPuwRbo/edit?gid=0#gid=0/|*here*>. Please note we have a maximum of 15 participants per class, a minimum notice period of 2 hours is required if you can no longer attend."
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": "Thursday, 24th October :calendar-date-24:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":breakfast: *Breakfast*: Provided by *Kartel Catering* from *8:30am - 10:30am* in the Wominjeka Breakout Space.\n\n"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*Later this month:* :rocket-kid:We have our Hackathon/Halloween/Hacka-ween/Hallothon Themed Social+ on the 31st of October! :jack_o_lantern: \n\nStay tuned to this channel for more details, and make sure you're subscribed to the <https://calendar.google.com/calendar/u/0?cid=Y19xczkyMjk5ZGlsODJzMjA4aGt1b3RnM2t1MEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t|*Melbourne Social Calendar*> :party-wx:"
			}
		}
	]
}
package santelices_binary;

import java.util.Collections;
import javax.swing.JFrame;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;

public class santelices_binary extends JFrame {
    JTree tree;
    
public santelices_binary() {
    DefaultMutableTreeNode html = new DefaultMutableTreeNode("html");
    DefaultMutableTreeNode head = new DefaultMutableTreeNode("head");
    DefaultMutableTreeNode body = new DefaultMutableTreeNode("body");
    html.add(head);
    html.add(body);
    
    DefaultMutableTreeNode meta = new DefaultMutableTreeNode("meta");
    DefaultMutableTreeNode title = new DefaultMutableTreeNode("title");
    head.add(meta);
    head.add(title);
    
    DefaultMutableTreeNode u1 = new DefaultMutableTreeNode("u1");
    DefaultMutableTreeNode h1 = new DefaultMutableTreeNode("h1");
    DefaultMutableTreeNode h2 = new DefaultMutableTreeNode("h2");
    body.add(u1);
    body.add(h1);
    body.add(h2);
    
    DefaultMutableTreeNode li1 = new DefaultMutableTreeNode("li");
    DefaultMutableTreeNode li2 = new DefaultMutableTreeNode("li");
    u1.add(li1);
    u1.add(li2);
    
    DefaultMutableTreeNode a = new DefaultMutableTreeNode("a");
    h2.add(a);
    
    System.out.println("4.1 Root Node: " + html.getRoot());
    System.out.println("4.2 Parent Nodes: " + head.getParent() + "' "
                                         + meta.getParent() + ", " 
                                         + u1.getParent() + ", " 
                                         + li1.getParent() + ", " 
                                         + a.getParent());
    System.out.println("4.3 Siblings: " + body.getPreviousSibling() + " and " + head.getNextSibling()
                                    + " , " + title.getPreviousSibling() + " and " + meta.getNextSibling()
                                    + " , " + li1.getNextSibling() + " and " + li2.getPreviousSibling());
    System.out.println("4.4 One-level subtrees: " + "\n" + " html - " + Collections.list(html.children())
                                                + "\n" + " head - " + Collections.list(head.children())
                                                + "\n" + " body - " + Collections.list(body.children())
                                                + "\n" + " u1 - " + Collections.list(u1.children())
                                                + "\n" + " h2 - " + Collections.list(h2.children()));
    System.out.println("4.5 Nodes per level: " + "\nLevel" + html.getLevel() + " - html"
                                            + "\nLevel" + head.getLevel() + " - head , body"
                                            + "\nLevel" + meta.getLevel() + " - meta, title, u1, h1, h2"
                                            + "\nLevel" + li1.getLevel() + " - li, li");
    System.out.println("4.6 Depth: " + html.getDepth());
    System.out.println("4.7 Degree of each one-level subtree: " + "html - " + html.getDepth()
                                                            + "\n" + "head - " + head.getDepth()
                                                            + "\n" + "body - " + body.getDepth()
                                                            + "\n" + "u1 - " + u1.getDepth()
                                                            + "\n" + "h2 - " + h2.getDepth());
    System.out.println("4.8 List of nodes based on: ");
    System.out.println("breadth - first: " + Collections.list(html.breadthFirstEnumeration()));
    System.out.println("breadth - first: " + Collections.list(html.preorderEnumeration()));                                        
    System.out.println("breadth - first: " + Collections.list(html.postorderEnumeration()));
                                            
    tree = new JTree(html);
    
    add(tree);
    this.setTitle("JTree Example");
    this.setSize(300,300);
    this.setVisible(true);
    
              
}
    public static void main(String[] args){
        new santelices_binary();
    }
}
package layosa_treebinary;

import java.util.Collections;
import javax.swing.JFrame;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;

public class layosa_treebianry extends JFrame {
    JTree tree;
    
public layosa_treebianry() {
    DefaultMutableTreeNode html = new DefaultMutableTreeNode("html");
    DefaultMutableTreeNode head = new DefaultMutableTreeNode("head");
    DefaultMutableTreeNode body = new DefaultMutableTreeNode("body");
    html.add(head);
    html.add(body);
    
    DefaultMutableTreeNode meta = new DefaultMutableTreeNode("meta");
    DefaultMutableTreeNode title = new DefaultMutableTreeNode("title");
    head.add(meta);
    head.add(title);
    
    DefaultMutableTreeNode u1 = new DefaultMutableTreeNode("u1");
    DefaultMutableTreeNode h1 = new DefaultMutableTreeNode("h1");
    DefaultMutableTreeNode h2 = new DefaultMutableTreeNode("h2");
    body.add(u1);
    body.add(h1);
    body.add(h2);
    
    DefaultMutableTreeNode li1 = new DefaultMutableTreeNode("li");
    DefaultMutableTreeNode li2 = new DefaultMutableTreeNode("li");
    u1.add(li1);
    u1.add(li2);
    
    DefaultMutableTreeNode a = new DefaultMutableTreeNode("a");
    h2.add(a);
    
    System.out.println("4.1 Root Node: " + html.getRoot());
    System.out.println("4.2 Parent Nodes: " + head.getParent() + "' "
                                         + meta.getParent() + ", " 
                                         + u1.getParent() + ", " 
                                         + li1.getParent() + ", " 
                                         + a.getParent());
    System.out.println("4.3 Siblings: " + body.getPreviousSibling() + " and " + head.getNextSibling()
                                    + " , " + title.getPreviousSibling() + " and " + meta.getNextSibling()
                                    + " , " + li1.getNextSibling() + " and " + li2.getPreviousSibling());
    System.out.println("4.4 One-level subtrees: " + "\n" + " html - " + Collections.list(html.children())
                                                + "\n" + " head - " + Collections.list(head.children())
                                                + "\n" + " body - " + Collections.list(body.children())
                                                + "\n" + " u1 - " + Collections.list(u1.children())
                                                + "\n" + " h2 - " + Collections.list(h2.children()));
    System.out.println("4.5 Nodes per level: " + "\nLevel" + html.getLevel() + " - html"
                                            + "\nLevel" + head.getLevel() + " - head , body"
                                            + "\nLevel" + meta.getLevel() + " - meta, title, u1, h1, h2"
                                            + "\nLevel" + li1.getLevel() + " - li, li");
    System.out.println("4.6 Depth: " + html.getDepth());
    System.out.println("4.7 Degree of each one-level subtree: " + "html - " + html.getDepth()
                                                            + "\n" + "head - " + head.getDepth()
                                                            + "\n" + "body - " + body.getDepth()
                                                            + "\n" + "u1 - " + u1.getDepth()
                                                            + "\n" + "h2 - " + h2.getDepth());
    System.out.println("4.8 List of nodes based on: ");
    System.out.println("breadth - first: " + Collections.list(html.breadthFirstEnumeration()));
    System.out.println("breadth - first: " + Collections.list(html.preorderEnumeration()));                                        
    System.out.println("breadth - first: " + Collections.list(html.postorderEnumeration()));
                                            
    tree = new JTree(html);
    
    add(tree);
    this.setTitle("JTree Example");
    this.setSize(300,300);
    this.setVisible(true);
    
              
}
    public static void main(String[] args){
        new layosa_treebianry();
    }
}
    
    

const deepClone = (obj: any) => {
	if (obj === null) return null;
  let clone = { ...obj };

  Object.keys(clone).forEach(
	  (key) =>
      (clone[key] = typeof obj[key] === "object" ? deepClone(obj[key]) : obj[key])
   );
	 return Array.isArray(obj) && obj.length
	   ? (clone.length = obj.length) && Array.from(clone)
	   : Array.isArray(obj)
     ? Array.from(obj)
     : clone;
};
const deepClone = (obj: any) => {
	if (obj === null) return null;
  let clone = { ...obj };
 
  Object.keys(clone).forEach(
	  (key) =>
      (clone[key] = typeof obj[key] === "object" ? deepClone(obj[key]) : obj[key])
   );
	 return Array.isArray(obj) && obj.length
	   ? (clone.length = obj.length) && Array.from(clone)
	   : Array.isArray(obj)
     ? Array.from(obj)
     : clone;
};
const deepClone = (obj: any) => {
	if (obj === null) return null;
  let clone = { ...obj };
 
  Object.keys(clone).forEach(
	  (key) =>
      (clone[key] = typeof obj[key] === "object" ? deepClone(obj[key]) : obj[key])
   );
	 return Array.isArray(obj) && obj.length
	   ? (clone.length = obj.length) && Array.from(clone)
	   : Array.isArray(obj)
     ? Array.from(obj)
     : clone;
};
const deepClone = (obj: any) => {
	if (obj === null) return null;
  let clone = { ...obj };
 
  Object.keys(clone).forEach(
	  (key) =>
      (clone[key] = typeof obj[key] === "object" ? deepClone(obj[key]) : obj[key])
   );
	 return Array.isArray(obj) && obj.length
	   ? (clone.length = obj.length) && Array.from(clone)
	   : Array.isArray(obj)
     ? Array.from(obj)
     : clone;
};
const deepClone = (obj: any) => {
	if (obj === null) return null;
  let clone = { ...obj };
 
  Object.keys(clone).forEach(
	  (key) =>
      (clone[key] = typeof obj[key] === "object" ? deepClone(obj[key]) : obj[key])
   );
	 return Array.isArray(obj) && obj.length
	   ? (clone.length = obj.length) && Array.from(clone)
	   : Array.isArray(obj)
     ? Array.from(obj)
     : clone;
};
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": "✨ :magic_wand::xero-unicorn: End of Year Celebration – A Sprinkle of Magic! :xero-unicorn: :magic_wand:✨",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*Hi Auckland!* \nGet ready to wrap up the year with a sprinkle of magic and a lot of fun at our End of Year Event! Here’s everything you need to know:"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"fields": [
				{
					"type": "mrkdwn",
					"text": "*πŸ“… When:*\nFriday 22nd November"
				},
				{
					"type": "mrkdwn",
					"text": "*πŸ“ Where:*\n<https://maps.app.goo.gl/EB2EsaDyGbUaKZ6b7|*Shed 10*> \n89 Quay Street, Auckland CBD, Auckland 1010"
				},
				{
					"type": "mrkdwn",
					"text": "*⏰ Time:*\n4 PM - 10 PM"
				}
			]
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*:magic_wand::xero-unicorn: Theme:*\n_A Sprinkle of Magic_ – Our theme is inspired by the Xero Unicorn, embracing creativity, inclusivity, and diversity. Expect unique decor, magical moments, and a fun-filled atmosphere!"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*:dress: Dress Code:*\nSmart casual – Show your personality, but no Xero tees or lanyards, please!\nIf you're feeling inspired by the theme, why not add a little 'Sprinkle of Magic' to your outfit? Think glitter, sparkles, or anything that shows off your creative side! (Totally optional, of course! ✨)"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*🚍 Transport Info:*\n*Public Transport:* Via bus routes 755 from Strand Station, TMK from The Strand & INN from Parnell shops to Britomart. Alternatively, Train from Parnell to Britomart Train Station. \n*Parking:* There is no public parking at Shed 10 on Queens Wharf. Public parking is available at the Britomart and Downtown Car Parks."
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*🎀 :hamburger: Entertainment & Food:*\nPrepare to be dazzled by live music, enchanting magic shows, cozy chill-out zones, delicious bites, refreshing drinks, and plenty of surprises! ✨🎢"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*🎟 RSVP Now:*\nCheck your emails - Invite sent to you via Jomablue!\nMake sure you RSVP by 08 November 2024!"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":question::question:Got questions? See the <https://docs.google.com/document/d/1iygJFHgLBRSdAffNsg3PudZCA45w6Wit7xsFxNc_wKM/edit|FAQs> doc or post in the Slack channel.\nWe can’t wait to celebrate with you! :partying_face: :xero-love:"
			}
		}
	]
}
<head>
    <style>
        /* Range Slider Styles */
        .rangeslider,
        .rangeslider__fill {
            background: #e6e6e6;
            display: block;
            height: 12px;
            width: 100%;
            border-radius: 10px;
        }

        .rangeslider {
            position: relative;
        }

        .rangeslider__fill {
            background: #00ff00;
            position: absolute;
            top: 0;
        }

        .rangeslider__handle {
            background: white;
            border: 1px solid #D9DBE9;
            cursor: pointer;
            display: inline-block;
            width: 80px;
            height: 40px;
            position: absolute;
            top: -10px;
            border-radius: 50%;
        }

        .wrapper-rangeslider {
            width: 100%;
            margin: 50px auto 0;
        }

        /* Text Animation Styles */
        [text-split] {
            opacity: 0;
        }
        
        html.w-editor [text-split] {
            opacity: 1;
        }

        .word {
            overflow: hidden;
            padding-bottom: 0.1em;
            margin-bottom: -0.1em;
            transform-origin: bottom;
        }

        /* Lenis Scroll Styles */
        html.lenis {
            height: auto;
        }

        .lenis.lenis-smooth {
            scroll-behavior: auto;
        }

        .lenis.lenis-smooth [data-lenis-prevent] {
            overscroll-behavior: contain;
        }

        .lenis.lenis-stopped {
            overflow: hidden;
        }
    </style>
</head>
star

Sat Oct 19 2024 07:10:25 GMT+0000 (Coordinated Universal Time) https://technoderivation.com/real-estate-software-development

@bhupendra03 ##realestate ##softwaredevelopment ##developers

star

Sat Oct 19 2024 06:48:21 GMT+0000 (Coordinated Universal Time) https://technoderivation.com/ai-software-development

@yash147 ##ai ##ml ##developemnt

star

Sat Oct 19 2024 05:52:57 GMT+0000 (Coordinated Universal Time)

@Rishi1808

star

Sat Oct 19 2024 02:26:45 GMT+0000 (Coordinated Universal Time) https://frontdesk.mykaplan.tv/frontdesk-home/

@ghostbusted #javascript #chromeconsole

star

Fri Oct 18 2024 21:35:26 GMT+0000 (Coordinated Universal Time)

@saharmess #java

star

Fri Oct 18 2024 21:00:12 GMT+0000 (Coordinated Universal Time)

@saharmess #java

star

Fri Oct 18 2024 20:47:14 GMT+0000 (Coordinated Universal Time)

@saharmess #java

star

Fri Oct 18 2024 20:09:01 GMT+0000 (Coordinated Universal Time)

@WXCanada

star

Fri Oct 18 2024 18:01:16 GMT+0000 (Coordinated Universal Time)

@mitali10

star

Fri Oct 18 2024 16:18:52 GMT+0000 (Coordinated Universal Time) https://chatgpt.com/

@tokoyami_ds #php #woocomerce #wordpress

star

Fri Oct 18 2024 15:34:48 GMT+0000 (Coordinated Universal Time)

@deshmukhvishal2 #cpp

star

Fri Oct 18 2024 15:18:16 GMT+0000 (Coordinated Universal Time)

@WXCanada

star

Fri Oct 18 2024 14:37:50 GMT+0000 (Coordinated Universal Time)

@E23CSEU1151

star

Fri Oct 18 2024 14:24:09 GMT+0000 (Coordinated Universal Time) https://192.168.0.220:8006/pve-docs/chapter-pvesdn.html#pvesdn_controller_plugin_evpn

@codeplugin

star

Fri Oct 18 2024 14:20:06 GMT+0000 (Coordinated Universal Time)

@jrg_300i #undefined

star

Fri Oct 18 2024 09:03:35 GMT+0000 (Coordinated Universal Time) https://tussu.ie/accommodation/

@racheld

star

Fri Oct 18 2024 09:02:45 GMT+0000 (Coordinated Universal Time)

@antguy #html #css

star

Fri Oct 18 2024 09:01:07 GMT+0000 (Coordinated Universal Time) https://tussu.ie/accommodation/

@racheld

star

Fri Oct 18 2024 08:35:42 GMT+0000 (Coordinated Universal Time) https://www.codesnippets.cloud/snippet/WebSquadron/animated-nav-to-cross

@emalbert #wordpress #html #css

star

Fri Oct 18 2024 03:56:11 GMT+0000 (Coordinated Universal Time)

@WXAPAC

star

Fri Oct 18 2024 03:47:27 GMT+0000 (Coordinated Universal Time) https://learn.microsoft.com/en-us/graph/api/chatmessage-post?view

@knguyencookie

star

Fri Oct 18 2024 03:47:22 GMT+0000 (Coordinated Universal Time) https://learn.microsoft.com/en-us/graph/api/chatmessage-post?view

@knguyencookie

star

Fri Oct 18 2024 03:47:19 GMT+0000 (Coordinated Universal Time) https://learn.microsoft.com/en-us/graph/api/chatmessage-post?view

@knguyencookie

star

Fri Oct 18 2024 03:47:17 GMT+0000 (Coordinated Universal Time) https://learn.microsoft.com/en-us/graph/api/chatmessage-post?view

@knguyencookie

star

Fri Oct 18 2024 01:02:20 GMT+0000 (Coordinated Universal Time)

@FOHWellington

star

Fri Oct 18 2024 00:52:27 GMT+0000 (Coordinated Universal Time)

@FOHWellington

star

Fri Oct 18 2024 00:50:42 GMT+0000 (Coordinated Universal Time)

@FOHWellington

star

Fri Oct 18 2024 00:18:33 GMT+0000 (Coordinated Universal Time)

@FOHWellington

star

Thu Oct 17 2024 23:45:01 GMT+0000 (Coordinated Universal Time)

@FOHWellington

star

Thu Oct 17 2024 23:38:23 GMT+0000 (Coordinated Universal Time)

@FOHWellington

star

Thu Oct 17 2024 23:35:42 GMT+0000 (Coordinated Universal Time)

@FOHWellington

star

Thu Oct 17 2024 22:25:52 GMT+0000 (Coordinated Universal Time)

@deshmukhvishal2 #cpp

star

Thu Oct 17 2024 21:20:49 GMT+0000 (Coordinated Universal Time)

@davidmchale #js #remove #file-extension

star

Thu Oct 17 2024 17:22:10 GMT+0000 (Coordinated Universal Time)

@E23CSEU1151

star

Thu Oct 17 2024 13:33:50 GMT+0000 (Coordinated Universal Time)

@E23CSEU1151

star

Thu Oct 17 2024 12:41:47 GMT+0000 (Coordinated Universal Time)

@E23CSEU1151

star

Thu Oct 17 2024 12:41:46 GMT+0000 (Coordinated Universal Time)

@E23CSEU1151

star

Thu Oct 17 2024 11:10:42 GMT+0000 (Coordinated Universal Time) http://127.0.0.1:8000/

@vineethnj

star

Thu Oct 17 2024 08:34:48 GMT+0000 (Coordinated Universal Time)

@E23CSEU1151

star

Thu Oct 17 2024 07:42:57 GMT+0000 (Coordinated Universal Time)

@deshmukhvishal2 #cpp

star

Thu Oct 17 2024 04:52:02 GMT+0000 (Coordinated Universal Time)

@signup #html #javascript

star

Thu Oct 17 2024 04:51:08 GMT+0000 (Coordinated Universal Time)

@deshmukhvishal2 #cpp

star

Thu Oct 17 2024 02:13:40 GMT+0000 (Coordinated Universal Time)

@shivamp

star

Thu Oct 17 2024 02:05:41 GMT+0000 (Coordinated Universal Time)

@WXAPAC

star

Thu Oct 17 2024 01:55:39 GMT+0000 (Coordinated Universal Time)

@xiao #java

star

Thu Oct 17 2024 01:53:01 GMT+0000 (Coordinated Universal Time)

@JC

star

Wed Oct 16 2024 23:55:58 GMT+0000 (Coordinated Universal Time) https://code.pieces.app/onboarding/chrome/welcome

@maken #dart

star

Wed Oct 16 2024 23:03:18 GMT+0000 (Coordinated Universal Time) B%7B"type":"header","text":%7B"type":"plain_text","text":"✨%20:magic_wand::xero-unicorn:%20End%20of%20Year%20Celebration%20–%20A%20Sprinkle%20of%20Magic!%20:xero-unicorn:%20:magic_wand:✨","emoji":true%7D%7D,%7B"type":"section","text":%7B"type":"mrkdwn","text":"*Hi%20Auckland!*%20%5CnGet%20ready%20to%20wrap%20up%20the%20year%20with%20a%20sprinkle%20of%20magic%20and%20a%20lot%20of%20fun%20at%20our%20End%20of%20Year%20Event!%20Here’s%20everything%20you%20need%20to%20know:"%7D%7D,%7B"type":"divider"%7D,%7B"type":"section","fields":%5B%7B"type":"mrkdwn","text":"*πŸ“…%20When:*%5CnFriday%2022nd%20November"%7D,%7B"type":"mrkdwn","text":"*πŸ“%20Where:*%5Cn<https://maps.app.goo.gl/EB2EsaDyGbUaKZ6b7%7C*Shed%2010*>%20%5Cn89%20Quay%20Street,%20Auckland%20CBD,%20Auckland%201010"%7D,%7B"type":"mrkdwn","text":"*⏰%20Time:*%5Cn4%20PM%20-%2010%20PM"%7D%5D%7D,%7B"type":"section","text":%7B"type":"mrkdwn","text":"*:magic_wand::xero-unicorn:%20Theme:*%5Cn_A%20Sprinkle%20of%20Magic_%20–%20Our%20theme%20is%20inspired%20by%20the%20Xero%20Unicorn,%20embracing%20creativity,%20inclusivity,%20and%20diversity.%20Expect%20unique%20decor,%20magical%20moments,%20and%20a%20fun-filled%20atmosphere!"%7D%7D,%7B"type":"section","text":%7B"type":"mrkdwn","text":"*:dress:%20Dress%20Code:*%5CnSmart%20casual%20–%20Show%20your%20personality,%20but%20no%20Xero%20tees%20or%20lanyards,%20please!%5CnIf%20you're%20feeling%20inspired%20by%20the%20theme,%20why%20not%20add%20a%20little%20'Sprinkle%20of%20Magic'%20to%20your%20outfit?%20Think%20glitter,%20sparkles,%20or%20anything%20that%20shows%20off%20your%20creative%20side!%20(Totally%20optional,%20of%20course!%20✨)"%7D%7D,%7B"type":"section","text":%7B"type":"mrkdwn","text":"*🚍%20Transport%20Info:*%5Cn*Public%20Transport:*%20Via%20bus%20routes%20755%20from%20Strand%20Station,%20TMK%20from%20The%20Strand%20&%20INN%20from%20Parnell%20shops%20to%20Britomart.%20Alternatively,%20Train%20from%20Parnell%20to%20Britomart%20Train%20Station.%20%5Cn*Parking:*%20There%20is%20no%20public%20parking%20at%20Shed%2010%20on%20Queens%20Wharf.%20Public%20parking%20is%20available%20at%20the%20Britomart%20and%20Downtown%20Car%20Parks."%7D%7D,%7B"type":"section","text":%7B"type":"mrkdwn","text":"*🎀%20:hamburger:%20Entertainment%20&%20Food:*%5CnPrepare%20to%20be%20dazzled%20by%20live%20music,%20enchanting%20magic%20shows,%20cozy%20chill-out%20zones,%20delicious%20bites,%20refreshing%20drinks,%20and%20plenty%20of%20surprises!%20✨🎢"%7D%7D,%7B"type":"section","text":%7B"type":"mrkdwn","text":"*🎟%20RSVP%20Now:*%5CnCheck%20your%20emails%20-%20Invite%20sent%20to%20you%20via%20Jomablue!%5CnMake%20sure%20you%20RSVP%20by%2008%20November%202024!"%7D%7D,%7B"type":"divider"%7D,%7B"type":"section","text":%7B"type":"mrkdwn","text":":question::question:Got%20questions?%20See%20the%20<https://docs.google.com/document/d/1iygJFHgLBRSdAffNsg3PudZCA45w6Wit7xsFxNc_wKM/edit%7CFAQs>%20doc%20or%20post%20in%20the%20Slack%20channel.%5CnWe%20can’t%20wait%20to%20celebrate%20with%20you!%20:partying_face:%20:xero-love:"%7D%7D%5D%7D

@FOHWellington

star

Wed Oct 16 2024 16:48:04 GMT+0000 (Coordinated Universal Time)

@zily

Save snippets that work with our extensions

Available in the Chrome Web Store Get Firefox Add-on Get VS Code extension