Snippets Collections
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>
#include <iostream> 
using namespace std;

struct node{
    int data;
    struct node* next;
};
int main()
{
    node* head = new node;
    head-> data = 10;
    head-> next = NULL;
    cout << "1st node is "<< head-> data << endl;
    
    node* current = new node;
    current-> data = 20;
    current-> next = NULL;
    head-> next = current;
    cout << "1st node is "<< current-> data << endl;
    
    
    current-> data = 30;
    current-> next = NULL;
    head-> next ->next = current;
    cout << "3rd node is "<< current-> data << endl;
    
    
    
}
// Define the coordinates for the specific point (e.g., the location of interest)
var point = ee.Geometry.Point(90.2611485521762, 23.44690280909043);

// Create a buffer around the point (e.g., 30 kilometers)
var bufferRadius = 30000; // 30 km in meters
var pointBuffer = point.buffer(bufferRadius);

// Create a Landsat 8 Collection 2 Tier 1 image collection for the desired date range
var startDate = '2020-12-01';
var endDate = '2020-12-31';

var landsatCollection2 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
  .filterBounds(point)
  .filterDate(startDate, endDate);

// Cloud masking function for Landsat
function maskL8Clouds(image) {
  var qa = image.select('QA_PIXEL');
  var cloudMask = qa.bitwiseAnd(1 << 3).eq(0); // Cloud bit is 3rd
  return image.updateMask(cloudMask);
}

// Apply the cloud mask to the collection
var cloudFreeCollection = landsatCollection2.map(maskL8Clouds);

// Print the number of images in the collection
var imageCount = cloudFreeCollection.size();
print('Number of cloud-free images in the collection:', imageCount);

// Compute the maximum temperature across all cloud-free images (Band 10 - thermal infrared)
var maxTemperature = cloudFreeCollection.select('B10').max();

// Compute the minimum temperature across all cloud-free images (Band 10 - thermal infrared)
var minTemperature = cloudFreeCollection.select('B10').min();

// Convert temperatures from Kelvin to Celsius
var maxTemperatureCelsius = maxTemperature.subtract(273.15);
var minTemperatureCelsius = minTemperature.subtract(273.15);

// Clip the max and min temperature images to the buffer region around the point
var clippedMaxTemperature = maxTemperatureCelsius.clip(pointBuffer);
var clippedMinTemperature = minTemperatureCelsius.clip(pointBuffer);

// Inspect the max and min temperature values (Celsius) within the buffer region
var maxTempStats = clippedMaxTemperature.reduceRegion({
  reducer: ee.Reducer.max(),
  geometry: pointBuffer,
  scale: 30
});
var minTempStats = clippedMinTemperature.reduceRegion({
  reducer: ee.Reducer.min(),
  geometry: pointBuffer,
  scale: 30
});

print('Maximum Temperature (Celsius):', maxTempStats);
print('Minimum Temperature (Celsius):', minTempStats);

// Display the specific point and the max/min temperature layers on the map
Map.centerObject(point, 10);
Map.addLayer(point, {color: 'red'}, 'Specific Point');

// Add the max temperature layer to the map
Map.addLayer(
  clippedMaxTemperature,
  {
    min: 0, // Min temperature range (Celsius)
    max: 50, // Max temperature range (Celsius)
    palette: ['blue', 'lightblue', 'green', 'yellow', 'orange', 'red']
  },
  'Max Land Surface Temperature (Celsius)',
  false,
  0.75
);

// Add the min temperature layer to the map (can toggle display)
Map.addLayer(
  clippedMinTemperature,
  {
    min: 0, // Min temperature range (Celsius)
    max: 50, // Max temperature range (Celsius)
    palette: ['blue', 'lightblue', 'green', 'yellow', 'orange', 'red']
  },
  'Min Land Surface Temperature (Celsius)',
  false,
  0.75
);

// Add a legend for the temperature range (Max and Min)
var legend = ui.Panel({
  style: {
    position: 'bottom-right',
    padding: '8px 15px'
  }
});
legend.add(ui.Label({
  value: 'Land Surface Temperature (°C)',
  style: {
    fontWeight: 'bold',
    fontSize: '14px',
    margin: '0 0 4px 0',
    padding: '0'
  }
}));

// Define the color palette and corresponding temperature ranges (0-50°C)
var palette = ['blue', 'lightblue', 'green', 'yellow', 'orange', 'red'];
var tempRanges = ['0-8 °C', '9-16 °C', '17-24 °C', '25-32 °C', '33-40 °C', '41-50 °C'];

for (var i = 0; i < palette.length; i++) {
  var colorBox = ui.Label({
    style: {
      backgroundColor: palette[i],
      padding: '8px',
      margin: '0 0 4px 0'
    }
  });
  var description = ui.Label({
    value: tempRanges[i],
    style: {margin: '0 0 4px 6px'}
  });
  legend.add(
    ui.Panel({
      widgets: [colorBox, description],
      layout: ui.Panel.Layout.Flow('horizontal')
    })
  );
}
Map.add(legend);
// Define the coordinates for the specific point (e.g., the location of interest)
var point = ee.Geometry.Point(90.2611485521762, 23.44690280909043);

// Create a buffer around the point (e.g., 30 kilometers)
var bufferRadius = 30000; // 30 km in meters
var pointBuffer = point.buffer(bufferRadius);

// Create a Landsat 8 Collection 2 Tier 1 image collection for the desired date range
var startDate = '2020-12-01';
var endDate = '2020-12-31';

var landsatCollection2 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
  .filterBounds(point)
  .filterDate(startDate, endDate);

// Cloud masking function for Landsat
function maskL8Clouds(image) {
  var qa = image.select('QA_PIXEL');
  var cloudMask = qa.bitwiseAnd(1 << 3).eq(0); // Cloud bit is 3rd
  return image.updateMask(cloudMask);
}

// Apply the cloud mask to the collection
var cloudFreeCollection = landsatCollection2.map(maskL8Clouds);

// Print the number of images in the collection
var imageCount = cloudFreeCollection.size();
print('Number of cloud-free images in the collection:', imageCount);

// Compute the average temperature across all cloud-free images (Band 10 - thermal infrared)
var averageTemperature = cloudFreeCollection.select('B10').mean();

// Convert temperature from Kelvin to Celsius
var temperatureCelsius = averageTemperature.subtract(273.15);

// Clip the temperature image to the buffer region around the point
var clippedTemperature = temperatureCelsius.clip(pointBuffer);

// Inspect the temperature range (min and max values) within the buffer region
var temperatureStats = clippedTemperature.reduceRegion({
  reducer: ee.Reducer.minMax(),
  geometry: pointBuffer,
  scale: 30
});
print('Temperature range (Celsius):', temperatureStats);

// Display the specific point and the clipped temperature layer on the map
Map.centerObject(point, 10);
Map.addLayer(point, {color: 'red'}, 'Specific Point');

// Adjust visualization based on the inspected temperature range
Map.addLayer(
  clippedTemperature,
  {
    min: 10, // Adjust these values after checking the printed temperature range
    max: 40, // Adjust these values after checking the printed temperature range
    palette: ['blue', 'lightblue', 'green', 'yellow', 'red']
  },
  'Clipped Land Surface Temperature (Celsius)',
  false,
  0.75 // Set transparency to help with visibility
);

// Add a legend to the map
var legend = ui.Panel({
  style: {
    position: 'bottom-right',
    padding: '8px 15px'
  }
});
legend.add(ui.Label({
  value: 'Average Land Surface Temperature (°C)',
  style: {
    fontWeight: 'bold',
    fontSize: '14px',
    margin: '0 0 4px 0',
    padding: '0'
  }
}));

// Define the color palette and temperature ranges for the legend
var palette = ['blue', 'lightblue', 'green', 'yellow', 'red'];
var tempRanges = ['10-15 °C', '16-20 °C', '21-25 °C', '26-30 °C', '31-40 °C'];

// Add the colors and labels to the legend
for (var i = 0; i < palette.length; i++) {
  var colorBox = ui.Label({
    style: {
      backgroundColor: palette[i],
      padding: '8px',
      margin: '0 0 4px 0'
    }
  });
  var description = ui.Label({
    value: tempRanges[i],
    style: {margin: '0 0 4px 6px'}
  });
  legend.add(
    ui.Panel({
      widgets: [colorBox, description],
      layout: ui.Panel.Layout.Flow('horizontal')
    })
  );
}

// Add the legend to the map
Map.add(legend);
import java.util.Scanner;

public class Patterns {

    // Main method to test the functionality of the patterns
    public static void main(String[] args) {
        // Call method to print design patterns
        printPatterns();

        // Call method to print horizontal bars
        printHorizontalBars();

        // Call method to print vertical bars
        printVerticalBars();
    } // end main

    // Method to print various patterns using nested loops
    public static void printPatterns() {
        System.out.println("printPatterns() method called....");
        
        // First pattern
        for (int row = 1; row <= 8; row++) {
            for (int col = 1; col <= 8; col++) {
                if (row + col <= 9) {
                    System.out.print("# ");
                } else {
                    System.out.print("  ");
                }
            }
            System.out.println(); // Move to next line after each row
        }
        
        // Second pattern
        for (int row = 1; row <= 8; row++) {
            for (int col = 1; col <= 8; col++) {
                if (row <= 9 - col) {
                    System.out.print("# ");
                } else {
                    System.out.print("  ");
                }
            }
            System.out.println(); // Move to next line after each row
        }

        // Third pattern
        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("  ");
                }
            }
            System.out.println(); // Move to next line after each row
        }

        // Fourth pattern
        for (int row = 1; row <= 8; row++) {
            for (int col = 1; col <= 8; col++) {
                if (row == 1 || row == 8 || col == 1 || col == 8 || row + col == 9) {
                    System.out.print("# ");
                } else {
                    System.out.print("  ");
                }
            }
            System.out.println(); // Move to next line after each row
        }
    }

    // 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 numbers from the keyboard
        num1 = sc.nextInt();
        num2 = sc.nextInt();
        num3 = sc.nextInt();
        num4 = sc.nextInt();

        // Print the horizontal bars
        printStars(num1);
        printStars(num2);
        printStars(num3);
        printStars(num4);
    }

    // Helper method to print a given number of stars
    private static void printStars(int count) {
        for (int i = 0; i < count; i++) {
            System.out.print("* ");
        }
        System.out.println(); // Move to 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 numbers from the keyboard
        num1 = sc.nextInt();
        num2 = sc.nextInt();
        num3 = sc.nextInt();
        num4 = sc.nextInt();

        // Find the maximum number of stars in any column
        int max = Math.max(num1, Math.max(num2, Math.max(num3, num4)));

        // Print the vertical bars
        for (int i = max; i > 0; i--) {
            if (i <= num1) System.out.print("** ");
            else System.out.print("   ");
            
            if (i <= num2) System.out.print("** ");
            else System.out.print("   ");
            
            if (i <= num3) System.out.print("** ");
            else System.out.print("   ");
            
            if (i <= num4) System.out.print("** ");
            else System.out.print("   ");
            
            System.out.println(); // Move to the next line after each level
        }

        // Print the row of dashes
        System.out.println("------------------------------");
    }
}
For this assignment you are to complete the code for the Java Class, named Patterns, that contains
a main method and three additional methods that will print various patterns. The main method will
act as a test driver for this program in that it will make one call to each of the following three methods.
Complete the code for the method, named printPatterns(), that uses for loops to print the pat-
terns that follow. You should use two nested for loops for each pattern (so you will have four
separate sets of nested for loops when complete). Your method should use Sys-
tem.out.print(“#”); to print the pattern and System.out.print(“ “); to print spaces that will be
needed for formatting. You are not allowed to use System.out.print(“####”), then Sys-
tem.out.print(“###”), and then System.out.print(“##”) or anything similar to print the patterns,
you may only print one character at a time and use control structures (logic) to determine when
to print the pattern. You will need to use if/else statements within the loops to determine when
to print the pattern or a space. You will need to use System.out.println() to advance to the next
line in the pattern.
NOTE: Each of the following patterns should be printed separately and will appear vertically
(one below the other) on the screen when printed. They are shown horizontally on this specifi-
cation to save space.
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # #
# # # # # # #
# # # # # # # # # # # # # # # # # #
Complete the code for the method, named printHorizontalBars(), that prompts the user for four
values and then draws corresponding bar graphs using an ASCII character. For example, if the
user entered 12, 9, 4 and 2 in that respective order, the program would draw.
* * * * * * * * * * * *
* * * * * * * * *
* * * *
* *
Complete the code for the method, named printVerticalBars(), that prompts the user for four
values and draws vertical bar charts using an ASCII character. A row of dashes should be dis-
played at the bottom of the chart. For example, if the user inputs 5, 2, 3, and 4, the program
should display.
**
** **
** ** **
** ** ** **
** ** ** **
------------------------------
The variables and methods defined within your Java class must include comments. Your program
should also be properly formatted, which includes indentation of code and package patterns;

import java.util.Scanner;

public class Patterns {


    // All of the code for the main method is complete.  No modifications are necessary.

    public static void main(String[] args) {

        // call method to print design patterns
        printPatterns();

        // call method to print horizontal bars
        printHorizontalBars();

        // call method to print vertical bars
        printVerticalBars();

    } // end main

    // Complete the code for the following method according to the project specifications.
    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

   Remove comments before coding
        for (int row = 1; row <= 8; row++)  // add code to complete the for loop
        {
            for ( int col = 1; col<= 8; col++) // add code to complete the for loop
            {
                if (row + col == 9 || row == col || row = 1 || row 8) // add condition to if-statement
                {
                    // You can swap the following print statements based on the logic you wish to use

                    System.out.print("#"); // print space in pattern (you can swap with print statement below to make logic easier
                }
                        else
                System.out.print("  "); // print character for pattern

                System.out.println(); // move to next line of the pattern been printed

        }
 */


        // Tested for loop to print the following pattern goes below:
        //    # # # # # # # #
        //	  # # # # # # #
        //	  # # # # # #
        //	  # # # # #
        //	  # # # #
        //	  # # #
        //	  # #
        //	  #


        for (int row = 1; row <= 8; row++)  // add code to complete the for loop
        {
            for ( int col = 1; col<= 8; col++) // add code to complete the for loop
            {
                if (row + col <= 9) // add condition to if-statement
                {
                    // You can swap the following print statements based on the logic you wish to use

                    System.out.print("#"); // print space in pattern (you can swap with print statement below to make logic easier
                }
                else
                    System.out.print("  "); // print character for pattern

                System.out.println(); // move to next line of the pattern been printed

                System.out.println


        // 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++)  // add code to complete the for loop
                {
                    for ( int col = 1; col<= 8; col++) // add code to complete the for loop
                    {
                        if (row + col == 9 || row == col || row = 1 || row 8) // add condition to if-statement
                        {
                            // You can swap the following print statements based on the logic you wish to use

                            System.out.print("#"); // print space in pattern (you can swap with print statement below to make logic easier
                        }
                        else
                            System.out.print("  "); // print character for pattern

                        System.out.println(); // move to next line of the pattern been printed

                        System.out.println();

                Tested for loop to print the following pattern goes below:
        //    # # # # # # # #
        //    #
        //    #
        //    # # # # # # # #
        //	  # # # # # # # #
        //    #
        //    #
        //    # # # # # # #


    }

    // Complete the code for the following method according to the project specifications.
    public static void printHorizontalBars()
    {
        Scanner sc = new Scanner(System.in);
        int num1 = 0; // number of times to print * on line 1
        int num2 = 0; // number of times to print * on line 2
        int num3 = 0; // number of times to print * on line 3
        int num4 = 0; // number of times to print * on line 4

        System.out.println("printHorizontalBars() method called....");

        // prompt user to enter four integers (selecting enter after each number)

        // read the numbers from the keyboard - remove comments tags to start
//       num1 = sc.nextInt();
//       num2 = sc.nextInt();
//       num3 = sc.nextInt();
//       num4 = sc.nextInt();

        // for loop to print out the number of *s for line 1

        // for loop to print out the number of *s for line 2

        // for loop to print out the number of *s for line 3

        // for loop to print out the number of *s for line 4


    }


    // Complete the code for the following method according to the project specifications.
    public static void printVerticalBars()
    {
        Scanner sc = new Scanner(System.in);
        int num1 = 0; // number of times to print * in column 1
        int num2 = 0; // number of times to print * in column 2
        int num3 = 0; // number of times to print * in column 3
        int num4 = 0; // number of times to print * in column 4

        // HINT: Printing to the console requires that you print from left to right starting
        // at the highest level and then moving from left to right...continuing to move from top
        // to bottom level of the pattern.  If you think of each column as a building, which building has
        // the most floors.
        //
        // For each building as you move from left to right...do you print ** or do you print two spaces.
        // You will need to print two spaces between each building to keep things manageable
        // You will also need to use a System.out.println() when you are finishing printing each
        // level.
        //
        // Since you are moving from the highest level to the lowest level, what is your for loop
        // going to look like.  You will need one for loop with four (4) if-else statements (one for each building)
        // inside the loop to help make the decision as to whether you will need to print the pattern
        // or spaces.
        //
        // When your loop has ended, you will then need to print a row of dashes at the bottom
        // of the pattern.

        int max = -1; // max number of *'s to print in any column

        System.out.println("printVerticalBars() method called....");

        // prompt user to enter four integers (selecting enter after each number)
        System.out.println();
        // read the numbers from the keyboard - remove comment tags to start
//       num1 = sc.nextInt();
//       num2 = sc.nextInt();
//       num3 = sc.nextInt();
//       num4 = sc.nextInt();

        // find the max  of all inputs

        // for loop to print out the max number of levels
        // if-else statement for building 1
        // if-else statement for building 2
        // if-else statement for building 3
        // if-else statement for building 4
        // end loop

        // print row of dashes


    }

} fix this code line by line  
// accountID = 3241967000000998225;
////////////////////////////////////////////
products = zoho.crm.searchRecords("Products","((Account_ID:equals:" + accountID + ")and(Product_Active:equals:true))");
classifications_list = List();
classifications_vs_catergories = Map();
catergories_vs_issueType = Map();
issueType_vs_recIds = Map();
///////////////////////////////////////////////////////////
for each  pro in products
{
	productName = pro.get("Product_Name").getPrefix("-");
	if(productName == null)
	{
		finalProductName = pro.get("Product_Name").trim();
	}
	else
	{
		finalProductName = productName.trim();
	}
	info finalProductName;
	queryMap = Map();
	queryMap.put("select_query","select Products, Classification, Problem_Category, Issue_Type, Required_Info_Type, Instructions, Multi_Option_Question, Output_Message, Output_Action, KB_Article from ChatBot_Actions where Products like '%" + finalProductName + "%'");
	response = invokeurl
	[
		url :"https://www.zohoapis.com/crm/v4/coql"
		type :POST
		parameters:queryMap.toString()
		connection:"zoho_crm"
	];
	// 	info response;
	//////////////////////////////////////////////////////////
	if(!isNull(response))
	{
		data = response.get("data");
		for each  val in data
		{
			products_list = val.get("Products").toList();
			if(products_list.contains(finalProductName))
			{
				classification = val.get("Classification");
				ProblemCategory = val.get("Problem_Category");
				IssueType = ifnull(val.get("Issue_Type"),"Empty");
				recId = val.get("id");
				///////////////////////////////////////////////
				if(!classifications_list.contains(classification))
				{
					classifications_list.add(classification);
				}
				////////////////////////////Classificaiton VS Categories/////////////////////////////
				if(classifications_vs_catergories.containKey(classification))
				{
					categories_list = classifications_vs_catergories.get(classification);
					if(!categories_list.contains(ProblemCategory))
					{
						categories_list.add(ProblemCategory);
						classifications_vs_catergories.put(classification,categories_list);
					}
				}
				else
				{
					categories_list = List();
					categories_list.add(ProblemCategory);
					classifications_vs_catergories.put(classification,categories_list);
				}
				//////////////////////////////////////////////////////////////////////////////
				////////////////////////////Categories VS Issue Types//////////////////////////
				keyCombination_issueType = classification + "/" + ProblemCategory;
				if(catergories_vs_issueType.containKey(keyCombination_issueType))
				{
					issueType_list = catergories_vs_issueType.get(keyCombination_issueType);
					if(!issueType_list.contains(IssueType))
					{
						issueType_list.add(IssueType);
						catergories_vs_issueType.put(keyCombination_issueType,issueType_list);
					}
				}
				else
				{
					issueType_list = List();
					issueType_list.add(IssueType);
					catergories_vs_issueType.put(keyCombination_issueType,issueType_list);
				}
				keyCombination = classification + "/" + ProblemCategory + "/" + IssueType;
				issueType_vs_recIds.put(keyCombination,recId);
			}
		}
	}
}
returnMap = Map();
returnMap.put("classifications",classifications_list);
returnMap.put("classificationsVsCategories",classifications_vs_catergories);
returnMap.put("catergoriesVsIssueTypes",catergories_vs_issueType);
returnMap.put("issueTypeVsrequireInfo",issueType_vs_recIds);
return returnMap;
add_filter( 'login_display_language_dropdown', '__return_false' );
# To check:
Dism /Online /Get-Featureinfo /Featurename:Recall

#To disable:
Dism /Online /Disable-Feature /Featurename:Recall
{
	"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 Milton Keynes!* \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": "section",
			"fields": [
				{
					"type": "mrkdwn",
					"text": "*:12_: When:*\nThursday 12th December"
				},
				{
					"type": "mrkdwn",
					"text": "*📍 Where:*\n<https://www.google.com/maps/place/Leonardo+Hotel+Milton+Keynes/@52.0383378,-0.7663002,17z/data=!4m9!3m8!1s0x4877aaa22fa26b5b:0x8191b0668324517d!5m2!4m1!1i2!8m2!3d52.0383345!4d-0.7637199!16s%2Fg%2F1wg5xhzv?entry=ttu&g_ep=EgoyMDI0MTAxMy4wIKXMDSoASAFQAw%3D%3D|*Leonardo Hotel, Milton Keynes*> \nMidsummer Blvd, Milton Keynes MK9 2HP"
				},
				{
					"type": "mrkdwn",
					"text": "*⏰ Time:*\n7 PM - 12 PM"
				}
			]
		},
		{
			"type": "divider"
		},
		{
			"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:* Bus routes 3, 4, 5, 6, & C1 all stop outside the venue. stop\n*Parking:* Off-site parking is available opposite the hotel on Midsummer Boulevard, approx 50m away. Standard bays (purple) are available from 50p per hour  \n*From the Xero office:* 5 minute drive or 15 minute walk. Please feel free to park in the Xero bays if allocated via Parkable."
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*🎤 :food-party: Prepare to be dazzled by a live DJ, dance floor, chill-out zones, 3-course sit down meal and drinks! ✨🎶"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*🎟 RSVP Now:*\nCheck your emails - Invite sent to you via Jomablue!\nMake sure you *RSVP by 5th November!*"
			}
		},
		{
			"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 Manchester!* \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": "*:22_: When:*\nFriday 22nd November"
				},
				{
					"type": "mrkdwn",
					"text": "*📍 Where:*\n<hhttps://www.google.com/maps/place/Impossible+-+Manchester/@53.4780444,-2.2533479,17z/data=!3m2!4b1!5s0x487bb1c2842b9745:0x3b61930895f80fcf!4m6!3m5!1s0x487bb1c2842aed53:0x59040b3a3f385d2a!8m2!3d53.4780445!4d-2.248477!16s%2Fg%2F11d_t4kcyq?entry=ttu&g_ep=EgoyMDI0MTAxMy4wIKXMDSoASAFQAw%3D%3D|*Impossible Manchester*> \n36 Peter Street, Manchester, M2 5QR"
				},
				{
					"type": "mrkdwn",
					"text": "*⏰ Time:*\n5:30PM - 10:30PM"
				}
			]
		},
		{
			"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 101, 18, 216, 250, 33 - 1 min walk from bus stop\n*Parking:* 700+ parking spaces at NCP Great Northern Carpark- GT Northern Warehouse 2, Watson Street, Manchester, M3 4EE.\n*Tram Station:* St.Peter's Square- 5 min walk."
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*🎤 :food-party: Entertainment & Food:*\nPrepare to be dazzled by a live DJ, dance floor, chill-out zones, 3-course sit down meal and drinks! ✨🎶"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*🎟 RSVP Now:*\nCheck your emails - Invite sent to you via Jomablue!\nMake sure you RSVP by [insert RSVP deadline]!"
			}
		},
		{
			"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> 
using namespace std;

struct node{
    int data;
    struct node *link;
    
};
int main(){
    struct node* head = new node;
    
    head->data=45;
    head->link=NULL;
    
    cout << "new node " << head->data<<endl;
    
    struct node* current = new node;
    current->data = 98;
    current->link = NULL;
    
    head->link = current ;
    
    
    cout << "new node " << current->data<< endl;
}
#include <iostream> 
using namespace std;

struct node{
    int data;
    struct node *link;
    
};
int main(){
    struct node* head = new node;
    
    head->data=45;
    head->link=NULL;
    
    cout << "new node " << head->data<<endl;
    
    struct node* current = new node;
    current->data = 98;
    current->link = NULL;
    
    head->link = current ;
    
    
    cout << "new node " << current->data<< endl;
}
#include <iostream>
using namespace std;

struct node{
    int data;
    struct node* link;
};
int main()
{
    struct node* head = new node;
    
    head ->data=45;
    head ->link=NULL;
    
    cout<< "new node value is "<< head ->data;
}
SELECT Id, ContentDocumentId, LinkedEntityId, ShareType, Visibility 
FROM ContentDocumentLink 
WHERE ContentDocumentId IN (SELECT Id FROM ContentDocument)
<video controls="controls" style="max-width: 100%; height: auto;">
  <source src="your_url_goes_here" type="video/mp4" />
Your browser does not support our video.
</video>
SELECT Id,Name,InterviewLabel, InterviewStatus,CreatedDate FROM FlowInterview WHERE InterviewStatus = 'Error'
package patterns;

import java.util.Scanner;

public class Patterns {


    // All of the code for the main method is complete.  No modifications are necessary.

    public static void main(String[] args) {

        // call method to print design patterns
        printPatterns();

        // call method to print horizontal bars
        printHorizontalBars();

        // call method to print vertical bars
        printVerticalBars();

    } // end main

    // Complete the code for the following method according to the project specifications.
    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

   Remove comments before coding
        for (int row = 1; row <= 8; row++)  // add code to complete the for loop
        {
            for ( int col = 1; col<= 8; col++) // add code to complete the for loop
            {
                if (row + col == 9 || row == col || row = 1 || row 8) // add condition to if-statement
                {
                    // You can swap the following print statements based on the logic you wish to use

                    System.out.print("#"); // print space in pattern (you can swap with print statement below to make logic easier
                }
                        else
                System.out.print("  "); // print character for pattern

                System.out.println(); // move to next line of the pattern been printed

        }
 */


        // Tested for loop to print the following pattern goes below:
        //    # # # # # # # #
        //	  # # # # # # #
        //	  # # # # # #
        //	  # # # # #
        //	  # # # #
        //	  # # #
        //	  # #
        //	  #


        for (int row = 1; row <= 8; row++)  // add code to complete the for loop
        {
            for ( int col = 1; col<= 8; col++) // add code to complete the for loop
            {
                if (row + col <= 9) // add condition to if-statement
                {
                    // You can swap the following print statements based on the logic you wish to use

                    System.out.print("#"); // print space in pattern (you can swap with print statement below to make logic easier
                }
                else
                    System.out.print("  "); // print character for pattern

                System.out.println(); // move to next line of the pattern been printed

                System.out.println


        // 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++)  // add code to complete the for loop
                {
                    for ( int col = 1; col<= 8; col++) // add code to complete the for loop
                    {
                        if (row + col == 9 || row == col || row = 1 || row 8) // add condition to if-statement
                        {
                            // You can swap the following print statements based on the logic you wish to use

                            System.out.print("#"); // print space in pattern (you can swap with print statement below to make logic easier
                        }
                        else
                            System.out.print("  "); // print character for pattern

                        System.out.println(); // move to next line of the pattern been printed

                        System.out.println();

                Tested for loop to print the following pattern goes below:
        //    # # # # # # # #
        //    #
        //    #
        //    # # # # # # # #
        //	  # # # # # # # #
        //    #
        //    #
        //    # # # # # # #


    }

    // Complete the code for the following method according to the project specifications.
    public static void printHorizontalBars()
    {
        Scanner sc = new Scanner(System.in);
        int num1 = 0; // number of times to print * on line 1
        int num2 = 0; // number of times to print * on line 2
        int num3 = 0; // number of times to print * on line 3
        int num4 = 0; // number of times to print * on line 4

        System.out.println("printHorizontalBars() method called....");

        // prompt user to enter four integers (selecting enter after each number)

        // read the numbers from the keyboard - remove comments tags to start
//       num1 = sc.nextInt();
//       num2 = sc.nextInt();
//       num3 = sc.nextInt();
//       num4 = sc.nextInt();

        // for loop to print out the number of *s for line 1

        // for loop to print out the number of *s for line 2

        // for loop to print out the number of *s for line 3

        // for loop to print out the number of *s for line 4


    }


    // Complete the code for the following method according to the project specifications.
    public static void printVerticalBars()
    {
        Scanner sc = new Scanner(System.in);
        int num1 = 0; // number of times to print * in column 1
        int num2 = 0; // number of times to print * in column 2
        int num3 = 0; // number of times to print * in column 3
        int num4 = 0; // number of times to print * in column 4

        // HINT: Printing to the console requires that you print from left to right starting
        // at the highest level and then moving from left to right...continuing to move from top
        // to bottom level of the pattern.  If you think of each column as a building, which building has
        // the most floors.
        //
        // For each building as you move from left to right...do you print ** or do you print two spaces.
        // You will need to print two spaces between each building to keep things manageable
        // You will also need to use a System.out.println() when you are finishing printing each
        // level.
        //
        // Since you are moving from the highest level to the lowest level, what is your for loop
        // going to look like.  You will need one for loop with four (4) if-else statements (one for each building)
        // inside the loop to help make the decision as to whether you will need to print the pattern
        // or spaces.
        //
        // When your loop has ended, you will then need to print a row of dashes at the bottom
        // of the pattern.

        int max = -1; // max number of *'s to print in any column

        System.out.println("printVerticalBars() method called....");

        // prompt user to enter four integers (selecting enter after each number)
        System.out.println();
        // read the numbers from the keyboard - remove comment tags to start
//       num1 = sc.nextInt();
//       num2 = sc.nextInt();
//       num3 = sc.nextInt();
//       num4 = sc.nextInt();

        // find the max  of all inputs

        // for loop to print out the max number of levels
        // if-else statement for building 1
        // if-else statement for building 2
        // if-else statement for building 3
        // if-else statement for building 4
        // end loop

        // print row of dashes


    }

}
#include <iostream>
using namespace std;

int main(void){

}
FIRST IN THE PRODUCT PAGE ADD THE NEW BUTTON 
 <!---- // -------- NEW FAREHARBOR BLUE BUTTON -------- // ---->
      <div class="fhButton" style="margin-top: 1.5em !important;">
        <a href="<?php echo $fareHarborLink; ?>" style="font-weight: bold !important; width: 100% !important; font-family:Lato, sans-serif !important; font-size: 1em !important; box-shadow:none !important; padding: .15em 2em !important; border-radius: 3px !important;" class="fh-shape--square fh-size--small  fh-button-true-flat-blue fh-color--white">Book now</a>
      </div>


THEN IN THE THEME LIQUID FILE ADD THE SCRIPT
<!-------- // -------- FAREHARBOR SCRIPT TO OVERRIDE PREVIOUS SOFTWARE BLUE BUTTON - CREATED A NEW BLUE BUTTON -------- // -------->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
    $(document).ready(function() {
        // Object to map page slugs to FareHarbor links
        var pageToLinkMapping = {
            "knife-skills-vegetable-yaki-soba-vegan-5": "https://fareharbor.com/embeds/book/leedscookeryschool/items/580473/?full-items=yes&flow=1265884",
            "friday-night-takeaway-thai": "https://fareharbor.com/embeds/book/leedscookeryschool/items/580660/?full-items=yes&flow=1265866",
            "a-taste-of-mexico-3": "https://fareharbor.com/embeds/book/leedscookeryschool/items/580459/?full-items=yes&flow=1265859",
            "parent-and-kids-chinese-takeaway": "https://fareharbor.com/embeds/book/leedscookeryschool/items/580676/?full-items=yes&flow=1265838"
        };

        // Get the current page URL
        var currentUrl = window.location.pathname;
        
        // Extract the page slug (part after the last slash)
        var pageSlug = currentUrl.substring(currentUrl.lastIndexOf('/') + 1);

        // Default FareHarbor link (in case no match is found)
        var fareHarborLink = "https://fareharbor.com/embeds/book/leedscookeryschool/?full-items=yes";

        // Check if the page slug exists in the mapping
        if (pageToLinkMapping.hasOwnProperty(pageSlug)) {
            fareHarborLink = pageToLinkMapping[pageSlug];
        }

        // Update the href attribute of the booking button
        $('.fhButton a').attr('href', fareHarborLink);
    });
</script>
import axios from 'axios';
import { getItem } from '../../utility/localStorageControl';

const API_ENDPOINT = `${process.env.REACT_APP_API_ENDPOINT}/api`;

const authHeader = () => ({
  Authorization: `Bearer ${getItem('access_token')}`,
});

const client = axios.create({
  baseURL: API_ENDPOINT,
  headers: {
    Authorization: `Bearer ${getItem('access_token')}`,
    'Content-Type': 'application/json',
  },
});

class DataService {
  static get(path = '') {
    return client({
      method: 'GET',
      url: path,
      headers: { ...authHeader() },
    });
  }

  static post(path = '', data = {}, optionalHeader = {}) {
    return client({
      method: 'POST',
      url: path,
      data,
      headers: { ...authHeader(), ...optionalHeader },
    });
  }

  static patch(path = '', data = {}) {
    return client({
      method: 'PATCH',
      url: path,
      data: JSON.stringify(data),
      headers: { ...authHeader() },
    });
  }

  static put(path = '', data = {}) {
    return client({
      method: 'PUT',
      url: path,
      data: JSON.stringify(data),
      headers: { ...authHeader() },
    });
  }
}

/**
 * axios interceptors runs before and after a request, letting the developer modify req,req more
 * For more details on axios interceptor see https://github.com/axios/axios#interceptors
 */
client.interceptors.request.use((config) => {
  // do something before executing the request
  // For example tag along the bearer access token to request header or set a cookie
  const requestConfig = config;
  const { headers } = config;
  requestConfig.headers = { ...headers, Authorization: `Bearer ${getItem('access_token')}` };

  return requestConfig;
});

client.interceptors.response.use(
  (response) => response,
  (error) => {
    /**
     * Do something in case the response returns an error code [3**, 4**, 5**] etc
     * For example, on token expiration retrieve a new access token, retry a failed request etc
     */
    const { response } = error;
    const originalRequest = error.config;
    if (response) {
      if (response.status === 500) {
        // do something here
      } else {
        return originalRequest;
      }
    }
    return Promise.reject(error);
  },
);
export { DataService };
const scrollElm = document.scrollingElement;
scrollElm.scrollTop = 0;
if (document.prerendering) {
  document.addEventListener("prerenderingchange", initAnalytics, {
    once: true,
  });
} else {
  initAnalytics();
}
<style>
  html {
  font-family: avenir;
  margin: 2em;
  font-size: 180%;
  line-height: 1.5;
}

 
.navbar {
  display: flex;
  flex-wrap: wrap;
  width: max-content;
  gap: 1rem;
  border: 4px solid rebeccapurple;
  margin: 4em 0;
  padding: 0.25em 1em;
}
.navbar li {
  display: block; 
}
.navbar a {
  text-decoration: none;
  color: black;
}
.navbar a:hover {
  text-decoration: underline;
  text-decoration-color: orange;
  text-decoration-thickness: 3px;
  text-underline-offset: 6px;
}

.breadcrumbs {
  padding: 0;
  font-size: 84%;
}
.breadcrumbs li {
  display: inline-block; 
}
.breadcrumbs li::after {
  content: '>';
  font-size: 70%;
  padding: 0 0.5em;
  font-family: georgia, serif;
}
.breadcrumbs li:last-child::after {
  content:'';
}
.breadcrumbs a {
  color: black;
  text-underline-offset: 3px;
}
.breadcrumbs a:hover {
  text-decoration: underline;
  text-decoration-color: yellow;
  text-decoration-thickness: 1.1em;
  text-underline-offset: -0.9em;
  text-decoration-skip-ink: none;
}

</style>
<nav role="breadcrumb">
  <ol class="breadcrumbs">
    <li><a href="/">Home</a></li>
    <li><a href="/people">Blog</a></li>
    <li><a href="/contact">March</a></li>
    <li>March 9th Update</li>
  </ol>
</nav>

<main>
  <style>
    body {
  font-family: Avenir, Helevetica, sans-serif;
  margin: 1rlh 2rlh;
  font-size:0.9rem;
}
details {
  border: 1px solid grey;
  margin-block: 1rlh;
  padding: 1rlh;
  margin-trim: block;
}
details[open] summary {
  margin-block-end: 0.5rlh;
  color: red;
}
h1 {
  font-size: 1.1rem;
  font-weight: 400;
}
main {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2rlh;
}
code {
  background: #eee;
  padding: 0.2rlh;
  border-radius: 0.2rlh;
}
  </style>

  <section>
    <h1>Without name attributes</h1>
    <details open>
      <summary>Item 1</summary>
      <p>This is a <code>details</code> element, with a summary inside. It has an <code>open</code> attribute. This causes it to be open by default when the page loads, instead of closed.</p>
    </details>
    <details >
      <summary>Item 2</summary>
      <p>This is just like “Item 1” above, except without the <code>open</code> attribute.</p>
    </details>
    <details>
      <summary>Item 3</summary>
      <p>This is a third item.</p>
    </details>
  </section>
  
  <section>
      <button data-action="open">open all</button>
    <h1>With name attributes on each detail</h1>
    <details name="foobar" open>
      <summary>Item 1</summary>
      <p>In this column, all three items are named with the same name, using the <code>name</code> attribute. Which means any time a user clicks to open one item, any open item will automatically close.</p> 
      <p>Also, here the first item has the <code>open</code> attribute applied, so it’s open by default.</p> 
    </details>
    <details name="foobar">
      <summary>Item 2</summary>
      <p>Notice when you clicked this item, any open item automatically closed.</p>
    </details>
    <details name="foobar">
      <summary>Item 3</summary>
      <p>Using the <code>name</code> attribute can make for a better user experience. Users don’t have to manually manage a lot of open items. And developers don’t have to write any JavaScript to get this affect. The browser does the work.</p>
      <p>Take care, however, to make sure this is the best experience given your usecase. Think about users who might want or need to compare one item to another.</p>
    </details>
  </section>
</main>
<style>
  *{box-sizing: border-box;}

body {margin:0; background-color:#eee;
  font-family: 'Open Sans', sans-serif;
  font-size: 80%;
}

h1, p {margin: 1em 20px 0;}

.wrapper {
  display: flex; 
  flex-wrap: wrap;
  align-items: stretch;
  justify-content: flex-start;
}

article {
  flex: 1 1 200px;
  min-width: 200px; 
  max-width: 400px;
  border: 1px solid #000;
  padding-bottom: 20px;
}

img {
  width: 100%;
}

.dark-pattern {
  visibility: hidden;
  margin-top: 0;
  margin-bottom: 0;
  padding-top:0;
  padding-bottom: 0;
  border-width-top: 0;
  border-bottom: 0;
}
</style>
<main class="wrapper">
  <article>
    <img src="http://labs.thewebahead.net/images/zeldman2.jpg"><h1>Headline</h1><p>All of these beautiful NYC by photos are <a href="https://www.flickr.com/photos/zeldman">Jeffrey Zeldman</a>.</p>
  </article>

  <article><img src="http://labs.thewebahead.net/images/zeldman1.jpg">
  <h1>At vero eros et accumsan</h1><p>Et iusto odio dignissim qui blandit praesent. Nulla non ipsum condimentum, iaculis tellus et, tristique magna.</p></article>
 
  <article>
  <img src="http://labs.thewebahead.net/images/zeldman5.jpg">
  <p>Epsum factorial non deposit quid pro quo hic escorol. Olypian quarrels et gorilla congolium sic ad nauseum. Souvlaki ignitus carborundum e pluribus unum.</p></article>
  
  <article>
  <img src="http://labs.thewebahead.net/images/zeldman6.jpg">
  <h1>Luptatum zzril delenit augue</h1><p>Duis dolore te feugait nulla facilisi.</p></article>

  <article><img src="http://labs.thewebahead.net/images/zeldman7.jpg"></article>

  <article><img src="http://labs.thewebahead.net/images/zeldman10.jpg">
  <h1> Duis commodo ex quam</h1>
  <p>Et molestie sapien viverra eu. Vestibulum commodo elit maximus dui egestas lobortis. Nullam fringilla ultricies nulla nec dictum. Suspendisse potenti. Maecenas blandit sollicitudin est, vitae finibus ex dictum id.</p></article>

  <article><img src="http://labs.thewebahead.net/images/zeldman11.jpg">
    <h1>Aenean</h1>
    <p>Mauris magna elit, finibus id accumsan et, eleifend vitae velit. Ut egestas, ante eu iaculis mollis, ipsum est fermentum libero, eu dignissim mauris est sit amet nulla.</p></article>  
  

  <article class="dark-pattern"></article>
  <article class="dark-pattern"></article>
  <article class="dark-pattern"></article>
  <article class="dark-pattern"></article>
  <article class="dark-pattern"></article>
  <article class="dark-pattern"></article>
  <article class="dark-pattern"></article>
  <article class="dark-pattern"></article>
</main>
<h1>Accessible toggle checkbox</h1>
<br>
<style>
  .toggle {
  position: relative;
}
.toggle *,
.toggle *:before,
.toggle *:after {
  box-sizing: border-box;
}
.toggle input[type=checkbox] {
  opacity: 0;
  position: absolute;
  top: 0;
  left: 0;
  padding: 0;
}
.toggle input[type=checkbox]:focus ~ label .toggle__switch, .toggle input[type=checkbox]:hover ~ label .toggle__switch {
  background-color: #444;
}
.toggle input[type=checkbox]:checked:focus ~ label .toggle__switch, .toggle input[type=checkbox]:checked:hover ~ label .toggle__switch {
  background-color: #34690c;
}
.toggle input[type=checkbox]:checked ~ label .toggle__switch {
  background-color: #529c1a;
}
.toggle input[type=checkbox]:checked ~ label .toggle__switch:before {
  content: attr(data-unchecked);
  left: 0;
}
.toggle input[type=checkbox]:checked ~ label .toggle__switch:after {
  transform: translate3d(28px, 0, 0);
  color: #34690c;
  content: attr(data-checked);
}
.toggle label {
  user-select: none;
  position: relative;
  display: flex;
  align-items: center;
}
.toggle label .toggle__label-text {
  font-size: 1rem;
  padding-right: 30px;
}
.toggle .toggle__switch {
  font-size: 10px;
  height: 30px;
  -webkit-box-flex: 0;
  flex: 0 0 60px;
  border-radius: 30px;
  transition: background-color 0.3s cubic-bezier(0.86, 0, 0.07, 1);
  background: #636060;
  position: relative;
}
.toggle .toggle__switch:before {
  left: 30px;
  font-size: 10px;
  line-height: 30px;
  width: 30px;
  padding: 0 4px;
  color: #e6e6e6;
  content: attr(data-checked);
  position: absolute;
  top: 0;
  text-transform: uppercase;
  text-align: center;
}
.toggle .toggle__switch:after {
  font-weight: 700;
  top: 2px;
  left: 2px;
  border-radius: 15px;
  width: 28px;
  line-height: 26px;
  font-size: 10px;
  transition: transform 0.3s cubic-bezier(0.86, 0, 0.07, 1);
  color: #34690c;
  content: attr(data-unchecked);
  position: absolute;
  z-index: 5;
  text-transform: uppercase;
  text-align: center;
  background: white;
  transform: translate3d(0, 0, 0);
}
</style>
<div class="toggle">
  <input id="toggle-demo" type="checkbox">
  <label for="toggle-demo">
    <div class="toggle__label-text">Toggle Me</div>
    <div class="toggle__switch" data-checked="Yes" data-unchecked="No"></div>    
  </label>
</div>
body:has(input[type="checkbox"]:checked) {
  background: blue;
  --primary-color: white;
}
body:has(input[type="checkbox"]:checked) form { 
  border: 4px solid white;
}
body:has(input[type="checkbox"]:checked) form:has(:focus-visible) {
  background: navy;
}
body:has(input[type="checkbox"]:checked) input:focus-visible {
  outline: 4px solid lightsalmon;
}
body:has(option[value="pony"]:checked) {
  --font-family: cursive;
  --text-color: #b10267;
  --body-background: #ee458e;
  --main-background: #f4b6d2;
}
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

star

Wed Oct 16 2024 16:37:09 GMT+0000 (Coordinated Universal Time)

@E23CSEU1151

star

Wed Oct 16 2024 15:45:51 GMT+0000 (Coordinated Universal Time)

@Rehbar #javascript

star

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

@Rehbar #javascript

star

Wed Oct 16 2024 15:30:05 GMT+0000 (Coordinated Universal Time)

@shivamp

star

Wed Oct 16 2024 15:27:00 GMT+0000 (Coordinated Universal Time)

@shivamp

star

Wed Oct 16 2024 14:59:23 GMT+0000 (Coordinated Universal Time)

@usman13

star

Wed Oct 16 2024 13:06:21 GMT+0000 (Coordinated Universal Time)

@webisko #php

star

Wed Oct 16 2024 10:42:51 GMT+0000 (Coordinated Universal Time) https://www.ntlite.com/community/index.php?threads/windows-11.2235/page-55#post-47349:~:text=admin%20mode%20and-,use%20Dism%20/Online%20/Get%2DFeatureinfo%20/Featurename%3ARecall%20to%20check%20yours.%0A%0AIF%20it%20is%20enabled%2C%20use%20Dism%20/Online%20/Disable%2DFeature%20/Featurename%3ARecall%20to%20disable%20it,-I%20have%20this

@Curable1600 #windows

star

Wed Oct 16 2024 10:09:42 GMT+0000 (Coordinated Universal Time)

@FOHWellington

star

Wed Oct 16 2024 10:07:47 GMT+0000 (Coordinated Universal Time)

@FOHWellington

star

Wed Oct 16 2024 09:05:06 GMT+0000 (Coordinated Universal Time) https://gamma.app/docs/Gioi-thieu-chung-ve-Truong-Nhat-ngu-Akamonkai-0lf8ui8pskyuc1w?mode

@hoangvip

star

Wed Oct 16 2024 09:04:26 GMT+0000 (Coordinated Universal Time) https://gamma.app/docs/Gioi-thieu-chung-ve-Truong-Nhat-ngu-Akamonkai-0lf8ui8pskyuc1w?mode

@hoangvip

star

Wed Oct 16 2024 05:12:52 GMT+0000 (Coordinated Universal Time)

@E23CSEU1151

star

Wed Oct 16 2024 05:12:52 GMT+0000 (Coordinated Universal Time)

@E23CSEU1151

star

Wed Oct 16 2024 03:14:34 GMT+0000 (Coordinated Universal Time)

@E23CSEU1151

star

Tue Oct 15 2024 23:18:06 GMT+0000 (Coordinated Universal Time) https://www.linkedin.com/posts/davidmasri_%F0%9D%90%8D%F0%9D%90%9E%F0%9D%90%B0-%F0%9D%90%AC%F0%9D%90%AE%F0%9D%90%A9%F0%9D%90%9E%F0%9D%90%AB-%F0%9D%90%A1%F0%9D%90%9A%F0%9D%90%9C%F0%9D%90%A4-%F0%9D%90%9F%F0%9D%90%A8%F0%9D%90%AE%F0%9D%90%A7%F0%9D%90%9D-ever-activity-7251940478143664129-YeU9?utm_source=share&utm_medium=member_desktop

@dannygelf #flow #salesforce #slds

star

Tue Oct 15 2024 22:01:50 GMT+0000 (Coordinated Universal Time) https://community.shopify.com/c/shopify-discussions/how-to-add-my-own-video-to-product-page-not-youtube-video/td-p/558698

@caughlan

star

Tue Oct 15 2024 21:23:25 GMT+0000 (Coordinated Universal Time) https://salesforce.stackexchange.com/questions/337563/cant-delete-flow-version-because-its-referenced-by-deleted-flow-interviews

@dannygelf #flow #salesforce #slds

star

Tue Oct 15 2024 17:04:14 GMT+0000 (Coordinated Universal Time)

@shivamp

star

Tue Oct 15 2024 14:37:49 GMT+0000 (Coordinated Universal Time)

@Belle #c++

star

Tue Oct 15 2024 14:08:05 GMT+0000 (Coordinated Universal Time)

@Shira

star

Tue Oct 15 2024 11:10:40 GMT+0000 (Coordinated Universal Time)

@wheedo

star

Tue Oct 15 2024 08:41:59 GMT+0000 (Coordinated Universal Time)

@wheedo

star

Tue Oct 15 2024 08:01:45 GMT+0000 (Coordinated Universal Time) https://medium.com/geekculture/top-nft-business-ideas-60e2913e264c

@LilianAnderson #nftbusiness #nftmonetaryvalue #startupopportunities #nftentrepreneurship #nftbusinessideas2024

star

Tue Oct 15 2024 07:25:45 GMT+0000 (Coordinated Universal Time)

@ziaurrehman #html

star

Tue Oct 15 2024 04:39:37 GMT+0000 (Coordinated Universal Time) https://developer.mozilla.org/en-US/docs/Web/API/Document/scrollingElement

@cbmontcw

star

Tue Oct 15 2024 04:37:59 GMT+0000 (Coordinated Universal Time) https://developer.mozilla.org/en-US/docs/Web/API/Document/prerendering

@cbmontcw

star

Tue Oct 15 2024 04:34:30 GMT+0000 (Coordinated Universal Time) https://codepen.io/jensimmons/pen/dybKOxm

@cbmontcw

star

Tue Oct 15 2024 04:29:38 GMT+0000 (Coordinated Universal Time) https://codepen.io/jensimmons/pen/poGBroL

@cbmontcw

star

Tue Oct 15 2024 04:18:46 GMT+0000 (Coordinated Universal Time) https://codepen.io/jensimmons/pen/XmYyeP

@cbmontcw

star

Tue Oct 15 2024 04:16:36 GMT+0000 (Coordinated Universal Time) https://codepen.io/jemin/pen/RwaqNoz?editors

@cbmontcw

star

Tue Oct 15 2024 04:10:24 GMT+0000 (Coordinated Universal Time) https://webkit.org/blog/13096/css-has-pseudo-class/#styling-form-states-without-js

@cbmontcw

star

Tue Oct 15 2024 04:08:58 GMT+0000 (Coordinated Universal Time) https://webkit.org/blog/13096/css-has-pseudo-class/

@cbmontcw ##css ##themes ##lightdark

Save snippets that work with our extensions

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